NSDictionary具有空值

时间:2013-03-04 10:57:34

标签: iphone ios objective-c nsdictionary

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

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

{
     "My Data" = null;
}

使用此代码将“我的数据”值转换为Dictionary变量Datas。

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

if ([Datas count] == 0) {

//code for showing AlertView....

}

当Dictionary值为null时,请帮我显示UIAlertView。

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:6)

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

答案 2 :(得分: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];
}