NSDictionary具有空值

Kal*_*imi 8 iphone objective-c nsdictionary ios

从Dictionary对象中提取数据时遇到问题.字典的计数显示为1,但它显示的一个值为空.我希望在Dictionary对象中没有数据时显示AlertView.我想在计数为'0'时显示AlertView,但它返回'1'.

我正在使用JSON从WebService中提取此字典对象.

{
     "My Data" = null;
}
Run Code Online (Sandbox Code Playgroud)

使用此代码将"My Data"值获取到Dictionary变量Datas中.

Datas = (NSDictionary *) [details objectForKey:@"My Data"];

if ([Datas count] == 0) {

//code for showing AlertView....

}
Run Code Online (Sandbox Code Playgroud)

当Dictionary值为null时,请帮我显示一个UIAlertView ....

das*_*ght 38

NSDictionary和其他集合不能包含nil值.当NSDictionary必须存储null,一个特殊的值[NSNull null]存储.

比较值的@"My Data",以[NSNull null]确定相应的值null或者不是.

// Since [NSNull null] is a singleton, you can use == instead of isEqual
if ([details objectForKey:@"My Data"] == [NSNull null]) {
    // Display the alert
}
Run Code Online (Sandbox Code Playgroud)


Car*_*zey 6

通常JSON中的空值被解析为NSNull.所以这个条件应该检查​​以及nil:if((details[@"My Data"] == nil) || (details[@"My Data"] == [NSNull null]))


Par*_*shi 5

if ([[details objectForKey:@"My Data"] isEqual:[NSNull null]] || [[details objectForKey:@"My Data"] isEqualToString:@""]) {
     UIAlertView *altTemp = [UIAlertView alloc]initWithTitle:@"Value Null" message:@"Your Message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
     [altTemp show];
     [altTemp release];
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么要测试isEqUal:NULL?如果是这样,它将评估为false,并且不适用于nsnull (4认同)