5

配列からいくつかのオブジェクトを選択したい。したがって、選択した開始インデックスと終了インデックスを使用しています。

NSLog(@"start:%d\nend:%d", startIndex, endIndex);
NSIndexSet *myIndexes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(startIndex, endIndex)];
NSLog(@"%d", [myIndexes lastIndex]);

最初のNSLogは私に

startIndex:49
endIndex:67

2番目のNSLogは私に

115

なぜ私は115が最大数であるのですか?67になるはずです。もちろん、アプリはクラッシュします。

キャッチされなかった例外'NSRangeException'が原因でアプリを終了しています。理由:' * -[NSArray objectsAtIndexes:]:インデックス115が境界を超えています[0 .. 96] '

私が間違っているのは何ですか?

4

1 に答える 1

16

NSRangeのメンバーはlocationandであり、ではありlengthません。これは、次のような構造体を作成する必要があることを意味します。startendNSRange

NSMakeRange(startIndex, endIndex - startIndex);
于 2010-10-25T20:23:06.690 に答える