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这个类问题就攻克了。无需改动逻辑代码。

原文地址:https://www.cnblogs.com/xfgnongmin/p/10751526.html

时间: 2024-08-29 06:53:01

NSNull floatValue intValue 找不到指定方法解决方式的相关文章

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

近期遇到一个问题: 由于后台人员对于接口数据没有做空值处理,导致客户端接收到的有些数据为空(NSNull),而针对此类数据恰好客户端的存储结构为int和float类型,类型转换时报出了[NSNull intValue]或者[NSNull floatValue] unrecognized selector sent to instance 的错误. 解决此问题尝试了以下思路: 1 添加returnObject == [NSNull null] 判断,NSNull的元素配置一个目标类型的初始值. 问

asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。

最近开发一个项目,里面用到了非.net开发的一个dll文件接口,发现发布到window2003服务器上后,运行网站总是提示 "无法加载 DLL"D:\11\1.dll": 找不到指定的模块. (异常来自 HRESULT:0x8007007E). "这个错误.但是我在本地xp系统上调试是可以的. dll使用com调用如下 [DllImport(@"D:\11\1.dll", EntryPoint = "aaa", CharSet

YouTube为什么打不开?以及简便的訪问的方法/解决方式!

在站点统计中看到好多人通过百度或者谷歌(Google)搜索引擎搜:YouTube怎么上不去,怎样不用代理server訪问YouTube,YouTube上不去的解决的方法,YouTube怎样訪问等等.事实上YouTube在中国大陆被封已经有一段时间了,我也非常少看YouTube的视频,所以没有太关注,只是YouTube的封锁对非常多人是损失,所以还是收集了一下,希望大家可以通过本文而方便的訪问YouTube! 如今,从自己电脑上看不到YouTube可用以下的方法解决: -------方法開始---

启动C:\Windows\System32\logiLDA.DLL时出现问题,找不到指定模块

环境:windows8.1专业版 问题:启动C:\Windows\System32\logiLDA.DLL时出现问题,找不到指定模块 每次开机都会弹出上图所示的信息. 经过查找是罗技鼠标驱动的问题:而把驱动卸载之后还是会弹对话框,更让人受不了的是C:\Windows\System32\logiLDA.DLL是存在的. 大部分的情况是系统盘不在C盘,而我的在C盘,同样出现这样的问题. 系统盘不在C盘的解决办法: 有遇到的没?Windows8不是安装在C盘,启动时提示LogiLDA.dll找不到-远

关于找不到指定的模块,异常来自HRESULT:0x8007007E的解决方法

上午从公司前辈那里拷贝到的ASP.NET代码,在自己机器上部署的时候发现问题,直接报错,找不到指定的模块,异常来自HRESULT:0x8007007E.并且一大堆警告. 在网上百度很多解决方法,归纳如下: 1.缺少DLL文件,我用depends打开我的BLL.DLL,发现确实缺失两个DLL文件,于是补齐,但是无济于事.此方法不通. 2.引用时候代码问题,主要是看代码是托管还是非托管,这里尝试,依然没成功. 最后请教了前辈,是这样解决的: 对网站(注意是网站,不是网页)点击右键-属性,会出来一大堆

VBScript报“找不到指定的模块”的处理方法

[背景] 一个用户电脑提交流程的时候报错,报"找不到指定的模块"js错误,打开js调试工具后,发现这行代码报错: window.execScript("Function vbsFun(str):vbsFun=hex(asc(str)):End Function","vbscript"); 起初以为是用户IE浏览器的问题,各种重置,控件重装,都无法解决. 搜索window.execScript也无果.最后以vbscript为关键字搜索发现问题的端倪

IIS自定义404错误页显示“系统找不到指定的文件”解决方法

在IIS站点属性里面设置了自定义的404错误页面为一个文件之后,有时一直不生效,总是提示这样一句话:“系统找不到指定的文件”. 其实这种错误也只是在某些网站程序中出现,其实解决办法很简单.这是由于IIS的普通用户没有访问指定的404.html页面的权限,造成了自定义的404错误页面无法显示,才显示“系统找不到指定的文件”.我们只要赋予指定的404.html页面给予USER用户组具有读的权限权限,就可以解决此问题. 就这么简单,事情就能轻松搞定. 在这里要提醒一下,有的人看到消息类型是“文件”设置

c# 无法加载 DLL xxxxxxxx找不到指定的模块。 (异常来自HRESULT:0x8007007E)。的一个解决方法

最近在做一个程序,想把某些功能用C++写成DLL供C#调用.但是无法如何都无法调用,提示"无法加载 DLL xxxxxxxx找不到指定的模块. (异常来自HRESULT:0x8007007E)." 而这个DLL放在另外一个程序却可以正常调用,经过仔细对比两者的区别时,发现这个DLL需要另外一个DLL文件,而另外的程序有另外的DLL,这个程序没有.于是把这个DLL放在这个程序的目录下就能正常调用自己写的DLL了.呵呵,真是惭愧.

c# 无法加载xxx.dll 找不到指定的模块(如何指定文件夹)

如果直接放在项目运行目录,例如bin/debug可以直接加载,但是这样比较乱. 如果在放debug里面的一个文件夹里面,有可能会报错“无法加载xxx.dll 找不到指定的模块”. 如果路径写成这样就会报错 framework/linphone 解决方法:将/ 改成"\" framework\linphone