我的iPhone应用程序崩溃,出现此错误:
[724:95876] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull objectForKey:]: unrecognized selector sent to instance 0x1b5970878'
仅此而已。我不知道坠机到底在哪里。我正在进行的项目非常庞大,是否有任何方法可以进一步了解objectForKey
上NSNull
的调用在哪里?
答案 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并引发异常。这样,您的代码将完全停止崩溃发生的位置。