美文网首页
ios NSNull 调用方法崩溃

ios NSNull 调用方法崩溃

作者: osnail | 来源:发表于2020-09-23 17:03 被阅读0次
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 = "<null>";
}
image.png

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

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

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

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

相关文章

网友评论

      本文标题:ios NSNull 调用方法崩溃

      本文链接:https://www.haomeiwen.com/subject/rbtpektx.html