如果陈述破裂了

时间:2012-06-03 12:53:39

标签: objective-c logic

有问题,这段代码

if ([g count] >= 1) {
     NSLog(@"%@", [g objectAtIndex:1]);
}

继续产生此错误

reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

除非我发疯,否则这不应该发生,对吧?

此时代码不是多线程的,我正在处理一个简单的数组。如果我NSLog g.count,我得到一个值。

编辑:我也试过

if ([g count] > 0) {
     NSLog(@"%@", [g objectAtIndex:1]);
}

并得到同样的错误。

2 个答案:

答案 0 :(得分:3)

count为1时,表示您可以使用索引零。 1的索引无效。

通常,只有从零到count-1的索引才有效。

答案 1 :(得分:3)

如果数组的计数== 1那么它只有索引0对吗?

正确的代码是

if ([g count] >= 2) {
     NSLog(@"%@", [g objectAtIndex:1]);
}

if ([g count] >= 1) {
     NSLog(@"%@", [g objectAtIndex:0]);
}

根据您需要的索引。