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这个类问题就攻克了。无需改动逻辑代码。
posted on 2019-04-22 17:43 xfgnongmin 阅读(203) 评论(0) 编辑 收藏 举报