我想从数组中选择一些对象。因此我正在使用我选择的开始和结束索引。
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]'
我做错了什么?
答案 0 :(得分:16)
NSRange
的成员是location
和length
,而不是start
和end
。这意味着您需要像这样创建NSRange
结构:
NSMakeRange(startIndex, endIndex - startIndex);