我正在使用目标c来购买
iphone应用程序.
我看到[dictionary objectForKey:@“key”]返回< null>.做一个if([dictionary objectForKey:@“key”] == nil || [dictionary objectForKey:@“key”] == null)似乎没有抓住这种情况.
做一个if([[dictionary objectForKey:@“key”] isEqualToString:@“< null>”])导致我的程序崩溃.
捕获< null>?的正确表达式是什么?
更多细节
对于nil的if语句仍然没有抓住案例…也许我只是太累了看不到的东西,但这里的附加信息:
字典通过包含json数据的url填充,如下所示:
NSURL *url = [NSURL URLWithString:"http://site.com/"]; dataresult = [NSData dataWithContentsOfURL:url]; NSError *error; NSMutableDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:dataresult options:kNilOptions error:& error];
在字典上执行NSLog会产生以下输出:
{ key = "<null>"; responseMessage = "The email / registration code combination is incorrect"; }
解决方法
你有一个NSNull的例子.实际上,实例,因为它是一个单身人士.
Cocoa集合不能包含nil,但如果您尝试访问不存在的内容,它们可能会返回nil.
但是,有时候,一个程序在一个集合中存储一个意味着“没有”的东西是有价值的.这就是NSNull的用途.
碰巧,JSON可以表示null对象.因此,在将JSON转换为Cocoa集合时,这些空对象将转换为NSNull对象.
当Cocoa使用“%@”说明符格式化字符串时,nil值将被格式化为带有括号的“(null)”. NSNull值将格式化为“< null>”带尖括号.