开发者

indexSetWithIndexesInRange is not doing what expected

I want to select some objects from an array. Therefore I'm using begin and end indexes of my selection.

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

The first NSLog gives me

startIndex:49

endIndex:67

The second NSLog gives me

115

Why 开发者_JS百科do I have 115 as highest number? It should be 67. Of course the app crashes:

Terminating app due to uncaught exception 'NSRangeException', reason: '* -[NSArray objectsAtIndexes:]: index 115 beyond bounds [0 .. 96]'

What I'm doing wrong?


NSRange's members are location and length, not start and end. This means you need to create your NSRange struct like this:

NSMakeRange(startIndex, endIndex - startIndex);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜