我正在尝试通过获取现有数组并从中删除 nil 值来填充数组。该数组是从 http 调用的 JSON 响应中填充的。有时数组最后有一个空值,删除该值的最简单方法是,我不必在代码中的任何地方处理它,就是使用NSArray
'sfilteredArrayUsingPredicate:
将变量分配给我在整个过程中使用的实例变量班级。
NSArray *respAgencyList = (NSArray*) [JSON valueForKeyPath:@"xml.path.to.data" ];
NSLog(@"data before filter: %@", respAgencyList);
// prints: ( { domain: "foo.com", name:"foobar"}, "<null>" });
if (respAgencyList != nil && respAgencyList.count > 0) {
agencies = [respAgencyList filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSLog(@"Evaluated object is %@", evaluatedObject); //prints <null> for the null value
BOOL ret = evaluatedObject != nil;
return ret;
}]];
}
在上面的代码中,返回值总是YES
. 但是,当我打开调试器并单步执行时,我看到:
evaluatedObject = id 0x00000000
这不是一个null
/nil
值吗?与 相比,这个值有什么不同nil
?