从Parse错误中检索空数组

时间:2014-09-29 20:53:15

标签: ios xcode cocoa-touch parse-platform nsarray

在我的应用中,用户可以查看自己的统计信息。我从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"

我无法弄清楚发生了什么......任何人都知道发生了什么事?

2 个答案:

答案 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");
}

这样安全吗?