5

我想从数组中选择一些对象。因此,我使用我选择的开始和结束索引。

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

第一个 NSLog 给了我

开始索引:49
结束索引:67

第二个 NSLog 给了我

115

为什么我的最高数字是 115?应该是 67。当然应用程序崩溃了:

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“ * -[NSArray objectsAtIndexes:]: index 115 beyond bounds [0 .. 96]”

我做错了什么?

4

1 回答 1

16

NSRange的成员是locationand length,不是startand end。这意味着您需要NSRange像这样创建结构:

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