NSNull floatValue intValue 找不到指定方法解决方式

Posted xfgnongmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSNull floatValue intValue 找不到指定方法解决方式相关的知识,希望对你有一定的参考价值。

最近遇到一个问题:

? ? ? ? 因为后台人员对于接口数据没有做空值处理。导致client接收到的有些数据为空(NSNull),而针对此类数据恰好client的存储结构为int和float类型。类型转换时报出了[NSNull intValue]或者[NSNull floatValue] unrecognized selector sent to instance 的错误。


解决此问题尝试了下面思路:

  • 1 加入returnObject == [NSNull null] 推断,NSNull的元素配置一个目标类型的初始值。


    问题攻克了,但这样做的话对于应用须要改动的地方较多,想想比較烦。

  • 2 想到此问题的引起原因是NSNull缺失这两种方法,也就是说仅仅要为NSNull扩展补充缺失的方法就不会有问题了。

扩展NSNull代码例如以下:

#import "NSNull+NullCast.h"   

@implementation NSNull (NullCast)   

- (float)floatValue  
{  

    return 0.0;  

}   

- (int)intValue  
{  

    return 0;  

}  

@end   

在可能出现相似问题的类中引入NSNull+NullCast这个类问题就攻克了。无需改动逻辑代码。

以上是关于NSNull floatValue intValue 找不到指定方法解决方式的主要内容,如果未能解决你的问题,请参考以下文章

Java数据类型转换

基本类型转换成NSNumber类型

java封装数据类型——Byte

字符串与基本数据类型转换

TouchJSON,处理 NSNull

使 NSNull 符合 NilLiteralConvertible