1

何かがおかしい、このコード

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

このエラーが発生し続ける

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

私が狂っていない限り、これは起こるべきではありませんよね?

この時点では、コードはマルチスレッド化されておらず、単純な配列で作業しています。g.count を NSLog すると、値は 1 になります。

編集:私も試しました

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

同じエラーが発生します。

4

2 に答える 2

3

が1の場合count、インデックスゼロを使用できることを意味します。のインデックスが1無効です。

一般に、ゼロからcount-1包括的までのインデックスのみが有効です。

于 2012-06-03T12:56:37.173 に答える
3

配列の数==1の場合、インデックスは0だけですよね?

正しいコードは次のようになります

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

また

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

必要なインデックスによって異なります。

于 2012-06-03T12:56:53.507 に答える