所以我正在解析推特时间表。 JSON响应中有一个名为“follow”的字段。它应该是真是假。
但有时候这个领域不见了。
当我这样做时:
NSLog(@"%@", [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]);
这是输出:
1
1
0
0
1
<null>
1
1
那么如何检查这些值?
答案 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
{
}