2

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

'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 的值可能为空。

4

3 回答 3

5

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

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

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

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

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

输出

here John
here Sam
here Billy
于 2013-07-10T10:44:12.120 回答
0
if ( [[current valueForKey:@"name"] length]!=0)
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}

我想这会对你有所帮助。

于 2013-07-10T11:22:40.850 回答
0

试试这样

if ([current valueForKey:@"name"] != nil | [current valueForKey:@"name"]!=[NSNull null] )
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}
于 2013-07-10T10:44:53.797 回答