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 找不到指定方法解决方式的更多相关文章
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
js replace 全局替换 js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...
- asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。
最近开发一个项目,里面用到了非.net开发的一个dll文件接口,发现发布到window2003服务器上后,运行网站总是提示 "无法加载 DLL"D:\11\1.dll": ...
- MVC几种找不到资源的解决方式
在MVC中,controller中的Action和View中的.cshtml文件名称有一个对应的关系. 当不对应时,有以下几种情况发生: 一.找不到视图的错误 请求URL:http://localho ...
- YouTube为什么打不开?以及简便的訪问的方法/解决方式!
在站点统计中看到好多人通过百度或者谷歌(Google)搜索引擎搜:YouTube怎么上不去,怎样不用代理server訪问YouTube,YouTube上不去的解决的方法,YouTube怎样訪问等等.事 ...
- jquery 找不到live方法解决
http://stackoverflow.com/questions/15573645/typeerror-live-is-not-a-function
- 启动C:\Windows\System32\logiLDA.DLL时出现问题,找不到指定模块
环境:windows8.1专业版 问题:启动C:\Windows\System32\logiLDA.DLL时出现问题,找不到指定模块 每次开机都会弹出上图所示的信息. 经过查找是罗技鼠标驱动的问题:而 ...
- Could not load file or assembly ‘ Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342’ or one of its dependencies系统找不到指定文件 处理方法
前些天做EF Model-First测试,开发环境为VS2013,数据库为Oracle 11g.所有东西都装好数据模型已经建立后准备执行“根据模型生成数据库”命令时,出现:Could not load ...
- vs2015 系统找不到指定的文件(异常来自HRESULT:0x80070002)问题的解决方法
vs2015 创建mvc项目时,弹出错误信息内容(系统找不到指定的文件(异常来自HRESULT:0x80070002)) 弹出窗体如下图所示: 导致整个原因是:未安装NuGet包 解决方法: 1)打开 ...
- 黄聪:Windows 64位系统中安装Android SDK“系统找不到指定的文件Java.exe”解决方法
明明已经在64位window7中安装好了64位版本的jdk,为什么android SDK安装程序却识别不到jdk呢?先看看报错: Java SE Development Kit (JDK) not f ...
随机推荐
- SQL--数据库--基本操作
SQL基本操作 基本操作:CRUD 将SQL的基本操作根据操作对象进行分类:库操作,表操作(字段),数据操作 库操作 对数据库的增删改查 新增数据库 基本语法Create database 数据库名字 ...
- ajax参考增删改查
AJAX做增删改查详细! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- Python 面向对象和面向过程对比
# 大象装冰箱 # 脚本, 此时代码是最简单的. 不需要构思整个程序的概况 print("开门") print("装大象") print("关门&qu ...
- 【Python】unittest-2-断言
Unittest中的断言 1. python unintest单元测试框架提供了一整套内置的断言方法. (1)如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 (2)如果 ...
- java多线程和Calendar(日历)常用API
一.进程与线程 进程是一个可执行的程序一次运行的过程 线程是程序中的一个执行流 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个主线程 二.Calendar import java.u ...
- npm 包管理器的使用
1. 权限问题 Warning "root" does not have permission to access the dev dir · Issue #454 · nodej ...
- PHP目前比较常见的五大运行模式SAPI(转)
运行模式 关于PHP目前比较常见的五大运行模式: 1)CGI(通用网关接口/ Common Gateway Interface) 2)FastCGI(常驻型CGI / Long-Live CGI) 3 ...
- Java IntelliJ IDEA 不能显示项目里的文件结构
方法一: 关闭IDEA, 然后删除项目文件夹下的.idea文件夹 重新用IDEA工具打开项目 方法二: 菜单:File -> Invalidate Caches / Restart
- Gym.102059: 2018-2019 XIX Open Cup, Grand Prix of Korea(寒假gym自训第一场)
整体来说,这一场的质量比较高,但是题意也有些难懂. E.Electronic Circuit 题意: 给你N个点,M根线,问它是否是一个合法的电路. 思路: 一个合法的电路,经过一些串联并联关系, ...
- AE2
2.3缩放属性 ctrl+D 复制图层:这样可以吧这个图层的所有属性都复制过去 然后按着alt键,把图片替换掉 需要做一个倒计时(作业)(到1时做一个烟花效果) 问题:1.按着alt键,把图片替换掉. ...