在我的应用中,用户可以查看自己的统计信息。我从Parse中检索一个数组,如下所示:
...
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
userArray = [objects valueForKey:@"myArray"];
}];
当数组实际包含某些内容时代码工作得很好......但如果在Parse.com中没有任何内容保存到数组中,我会收到错误..
实施例: 我运行此代码进行测试:
NSLog(@"%lu", (unsigned long)[[userArray objectAtIndex:0] count]);
当数组包含某些内容时,它会记录正确的数字(有效)。但是当数组为空时我得到这个错误:
"-[NSNull count]: unrecognized selector sent to instance 0x199084fe0"
我无法弄清楚发生了什么......任何人都知道发生了什么事?
答案 0 :(得分:1)
你没有得到一个空数组,你得到一个NSNull
。您可以阅读有关差异的更多信息here。
测试NSNull是微不足道的。考虑用nil替换非NSArrays的值。
id myArray = userArray.firstObject;
myArray = [myArray isKindOfClass:[NSArray class]] ? myArray : nil;
NSLog(@"%i", [myArray count]); //will log 0 because myArray is nil
答案 1 :(得分:0)
我发现此代码可以解决我的问题:
id object = userArray[0];
if([object isEqual:[NSNull null]]) {
NSLog(@"Array is empty");
}
这样安全吗?