[NSNull objectForKey:]崩溃的原因,但我找不到

时间:2018-07-10 14:02:04

标签: ios objective-c crash nsdictionary nsnull

我的iPhone应用程序崩溃,出现此错误:

[724:95876] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull objectForKey:]: unrecognized selector sent to instance 0x1b5970878'

仅此而已。我不知道坠机到底在哪里。我正在进行的项目非常庞大,是否有任何方法可以进一步了解objectForKeyNSNull的调用在哪里?

2 个答案:

答案 0 :(得分:2)

似乎您正在从Web服务中获取数据,如果有的话,某些值是null。始终尝试投放您的响应,并根据期望值

您可以像这样在定义头文件中设置一些宏方法,也可以在接口声明附近定义

//配方形成

 #define NULLVALUE(m)                    ((m == nil || m==[NSNull null]) ? @"" : m)
 #define NULLVALUESpace(m)                    ((m == nil || m==[NSNull null]) ? @" " : m)
 #define NULLVALUEflaot(m)                  ((m == nil || m==[NSNull null]) ? 0.0f : (float)m)
 #define NULLVALUEcolor(m)                    ((m == nil || m==[NSNull null]) ? @"ffffff" : m)
 #define NULLVALUEOut(m)                    ((m == nil || [m length]==0) ? @"" : m)
 #define NULLArray(m)                    ((m == nil || m==null) ? new NSArray : m)
 #define SET_IF_NOT_NULL(TARGET, VAL) if(VAL != [NSNull null]) { TARGET = VAL; }

然后可以在代码中的任何位置使用它 喜欢

[NSString stringWithFormat:@"%@", NULLVALUESpace([Response objectForKey:key])];

答案 1 :(得分:0)

您是否在XCode中打开了“所有异常”断点?如果不是,请转到“断点”选项卡,然后在选项卡左下方的“ +”菜单中选择 Exception breakpoint 。默认情况下,应将其设置为捕获所有objc并引发异常。这样,您的代码将完全停止崩溃发生的位置。