valueForKey返回nil

时间:2013-07-10 10:40:18

标签: ios objective-c nsdictionary

愚蠢的问题警告......我可能会被剥夺睡眠,但我似乎无法弄清楚这一点。

'current'是NSDictionary

if ([current valueForKey:@"name"] != nil)
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}

打印

here John
here Sam
here <null>
here <null>
here Billy

'if xx!= nil'不应该阻止空值吗? 'name'存在于我的字典中,但name的值可能为空。

3 个答案:

答案 0 :(得分:4)

NSArrayNSDictionary不能包含nil值。 NSNULL专门创建为nil的占位符。它可以放入集合类中,只占用空间。

NSNull定义了一个单例对象,这意味着只有NSNull的单个实例,但它可以在任意多个地方使用。

你需要像这样检查......

if (current != nil || [current valueForKey:@"name"] != [NSNull null] )
{
      NSLog(@"here %@", [current valueForKey:@"name"]);
}

我相信你会得到这个输出.....

<强>输出

here John
here Sam
here Billy

答案 1 :(得分:0)

尝试这样,

if ([current valueForKey:@"name"] != nil | [current valueForKey:@"name"]!=[NSNull null] )
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}

答案 2 :(得分:0)

if ( [[current valueForKey:@"name"] length]!=0)
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}

我认为这会对你有所帮助。