indexSetWithIndexesInRange没有做到预期的事情

时间:2010-10-25 20:18:53

标签: iphone objective-c cocoa-touch nsindexset nsrange

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

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

第一个NSLog给了我

  

的startIndex:49
  endIndex的:67

第二个NSLog给了我

  

115

为什么我有115个最高号码?它应该是67.当然应用程序崩溃了:

  

由于未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [NSArray objectsAtIndexes:]:索引115超出边界[0 .. 96]'

我做错了什么?

1 个答案:

答案 0 :(得分:16)

NSRange的成员是locationlength,而不是startend。这意味着您需要像这样创建NSRange结构:

NSMakeRange(startIndex, endIndex - startIndex);