检查NSArray中的特定位置是否为零

时间:2015-03-08 14:29:57

标签: ios objective-c arrays null nsarray

我正在尝试检查我的数组中的某个位置是否为零:

if (resultArray[1] == nil) {
    NSLog(@"...");
}

但它总是与消息崩溃:
[_PFArray objectAtIndex:]: index (1) beyond bounds (1)'

我该如何解决这个问题,还是有其他方法可以检查它? 谢谢!

2 个答案:

答案 0 :(得分:1)

if (resultArray[1] == nil) {
    NSLog(@"..."); // <-- will NEVER be called
}

NSArray无法容纳nils。

尝试索引0,因为你的数组只包含一个元素,而索引是0,数组的最后一个可能索引是[array count] - 1。或者作为所有指数的范围:0..[array count] - 1

if([resultArray count] > 1){
    // holds at least 2 objects, valid indices: `0..[array count] - 1`
} else ([resultArray count]){
    // holds exactly 1 object, valid indices: `0..0`
} else {
   // empty, no valid index
}

答案 1 :(得分:0)

阵列中不能有空位。数组中的每个插槽都必须包含一个对象。您可以使用array.count来确定数组包含的对象数。如果array.count返回0,则数组为空(或者为nil,这可能令人困惑,但那是另一个故事。)

如果array.count返回3,则array [0],array [1]和array [2] 必须包含非零值。这就是NSArray对象的工作原理。

这与C数组不同,其中指针数组CAN包含空值。