NSNull floatValue intValue 找不到指定方法解决方案
2014-07-07 14:27
399 查看
近期遇到一个问题:
由于后台人员对于接口数据没有做空值处理,导致客户端接收到的有些数据为空(NSNull),而针对此类数据恰好客户端的存储结构为int和float类型,类型转换时报出了[NSNull intValue]或者[NSNull floatValue] unrecognized selector sent to instance 的错误。
解决此问题尝试了以下思路:
1 添加returnObject == [NSNull null] 判断,NSNull的元素配置一个目标类型的初始值。
问题解决了,但这样做的话对于应用需要修改的地方较多,想想比较烦。
2 想到此问题的引起原因是NSNull缺失这两种方法,也就是说只要为NSNull扩展补充缺失的方法就不会有问题了。
扩展NSNull代码如下:
在可能出现类似问题的类中引入NSNull+NullCast这个类问题就解决了,无需修改逻辑代码。
由于后台人员对于接口数据没有做空值处理,导致客户端接收到的有些数据为空(NSNull),而针对此类数据恰好客户端的存储结构为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 找不到指定方法解决方案[MD测试]
- 关于Hibernate中的int和float数据及Null value was assigned to a property of primitive type setter of
- [NSNull intValue]: unrecognized selector sent to instance 0x375c9860
- JDBC rs.getInt() 方法将null返回0,解决方案。
- 开机找不到指定模块及***.dll文件的解决方法
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法
- oci.dll 找不到指定的模块的解决方法
- CSS中float引起层飘出上级层的解决方案,清除浮动的好方法
- int,float等基础类型终于可以赋为null了
- “找不到网络路径”的检测方法及解决方案
- Page.FindControl方法找不到指定控件的原因
- JAVA int float long与String互相转换的方法
- VS2005:无法启动程序,系统找不到指定的文件解决方法
- LIB环境变量中指定的搜索路径:“C:/Program Files/Microsoft Visual Studio/VC98/mfc/lib 系统找不到找定的路径的解决方法
- Log4J配置后, log4j:ERROR setFile(null,true) call failed. 报错:java.io.FileNotFoundException: /log/mytest2.log (系统找不到指定的路径。)
- 解决使用MasterPage后,Page.FindControl方法找不到指定控件的问题
- Eclipse 运行使用指定的 JVM - m2eclipse 插件找不到 com.sun 的 default-tools.jar 的解决方案
- 找不到网络路径”的检测方法及解决方案
- DALFactory出现"未能加载文件或程序集“Flashlm.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案
- myeclipse _9.fdt (系统找不到指定的文件。) mavent 解决方法