ios NSNull 调用方法崩溃

2020-09-23 15:23:07.585876+0800 ThemeDemo[12040:281421] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull floatValue]: unrecognized selector sent to instance 0x7fff8062db10'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff23e3de6e __exceptionPreprocess + 350
    1   libobjc.A.dylib                     0x00007fff512a19b2 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff23e5eb94 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132

造成这种情况的例子:
假如有这么一个json

{
    "key1":"1",
    "key2":2,
    "key3":null
}

这个json在转换成字典之后会变成

{
    key1 = 1;
    key2 = 2;
    key3 = "";
}
image.png

对于此时的这个字典我们使用objectForKey这个方法取key3得到的是一个NSNull的对象

image.png

此时我们再继续使用这个取值去调用方法就会崩溃,因为NSNull是没有这个方法的。

常规情况我们都会用JSONModel YYModel或者MJExtension来转成对象来使用,而这些库都会内部处理不会让我们拿到这个NSNull的对象,所以还是建议尽量不要使用objectForKey去取json转data再转dic的值。

(其实如果取出来的真要是个nil倒还可以不会崩溃,nil 可以调用任何方法,注意这个方法是不会执行的。)

你可能感兴趣的:(ios NSNull 调用方法崩溃)