Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 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?

like image 439
testing Avatar asked Oct 25 '10 20:10

testing


1 Answers

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);
like image 64
dreamlax Avatar answered Oct 14 '22 02:10

dreamlax