views:

26

answers:

1

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?

+2  A: 

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);
dreamlax
That was it! Didn't looked at NSMakeRange. Nevertheless one thing isn't correct. Example: `startIndex=49` `endIndex=67`. Length then is 19 not 18 because I want to include 49. So it should be `NSMakeRange(startIndex, endIndex - startIndex+1);`
testing