我有一个类,其中包含用于进行Web调用的字典。基本上,如果Web调用需要任何值,则键值对用于创建将发布到URL的数据。此对象类使用JSON设置。
我有一个方法,它接受这个类对象并使用它来设置Web调用。我的问题是,如果不需要参数,那么字典被设置为null,这很好,这是我想要的,但出于某种原因,当我做一个if语句来检查字典是否为空时,它正在击中其他声明表明它不为null。方法看起来像这样
-(void)webCall :(WebServiceCall *)webCall_p
{
//Creates a dictionary from the one stored in the WebResponse Class
NSMutableDictionary *dict = [[webCall_p getWebServiceResponse] getVariablesByRegexMap];
NSLog(@"%@", dict);
}
当我打印出来时,我得到了这个
<null>
然而,如果我输入if语句来检查它是否为null
if(dict == NULL)
{
NSLog(@"NULL");
}
else
{
NSLog(@"Not NULL");
}
它说不是空的。如果我尝试使用dict count命令,就像这样
NSLog(@"%i", [dict count]);
应用程序崩溃并显示此错误
- [NSNull count]:发送到实例0xaf8678的无法识别的选择器2012-11-23 11:48:44.005测试[3403:14003] * 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:' - [NSNull count]:无法识别 选择器发送到实例0xaf8678'
我不能为我的生活弄清楚这一点。任何帮助将不胜感激
答案 0 :(得分:1)
值显然是NSNull,它是一个对象,而不是nil。 NSNull是一个单身if (dict == NSNull)
应该工作。
答案 1 :(得分:1)
使用此
if ([dict isKindOfClass:[NSNull class]]){
}
答案 2 :(得分:0)
您需要使用nil而不是NULL。
if (dict == nil)
...
答案 3 :(得分:0)
首先,如果您想检查是否存在,请检查nil
,而不是NULL
if (dict) { // or (dict == nil)
// do something
}
其次,对NSLog
使用正确的格式化程序,%d
代替%i
。