如何检查数组中的值是否为NULL?

时间:2012-04-09 17:45:15

标签: iphone objective-c ios xcode

所以我正在解析推特时间表。 JSON响应中有一个名为“follow”的字段。它应该是真是假。

但有时候这个领域不见了。

当我这样做时:

NSLog(@"%@", [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]);

这是输出:

1
1
0
0
1
<null>
1
1

那么如何检查这些值?

4 个答案:

答案 0 :(得分:13)

NSArray和其他集合不能将nil作为值,因为nil是集合结束时的“sentinel值”。您可以使用以下命令查找对象是否为空

if (myObject == [NSNull null]) {
    // do something because the object is null
}

答案 1 :(得分:3)

如果字段丢失,NSDictionary -objectForKey:将返回一个nil指针。您可以测试这样的nil指针:

NSNumber *following = [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"];

if (following)
{
    NSLog(@"%@", following);
}
else
{
    // handle no following field
    NSLog(@"No following field");
}

答案 2 :(得分:-1)

不是时间轴元素为空。它是&#34;用户&#34;字典或&#34;以下&#34;该对象为空。我建议创建一个用户模型类来封装一些json / dictionary messiness。事实上,我打赌你可以找到适用于iOS的开源Twitter API。

无论哪种方式,您的代码都会更具可读性:

TwitterResponse *response = [[TwitterResponse alloc] initWithDictionary:[timeline objectAtIndex:i]];
NSLog(@"%@", response.user.following);
上面的

TwitterResponse会实现一个只读属性TwitterUser *user,后者将实现NSNumber *following。使用NSNumber因为它允许空值(JSON响应中的空字符串)。

希望这有助于您走上正轨。祝你好运!

答案 3 :(得分:-1)

用于检查数组是否包含空值使用此代码。

if ([array objectAtIndex:0] == [NSNull null])
{
//do something
}
else
{
}