2010-10-25 14 views
5

Chcę wybrać niektóre obiekty z tablicy. Dlatego używam indeksów początkowych i końcowych mojego wyboru.indexSetWithIndexesInRange nie spełnia oczekiwań

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

Pierwszy NSLog daje mi

STARTINDEX: 49
endIndex: 67

Drugi NSLog daje mi

Dlaczego mam 115 jako najwyższy numer? Powinno być 67. Oczywiście awarii aplikacji:

zakończenie aplikacji ze względu nieprzechwyconego wyjątku 'NSRangeException' powodu: '* - [NSArray objectsAtIndexes:]: wskaźnik 115 poza granice 0 .. [96] "

Co robię źle?

Odpowiedz

16

NSRange „s członkowie są location i length nie start i end. Oznacza to, że musisz utworzyć swoją strukturę w następujący sposób:

NSMakeRange(startIndex, endIndex - startIndex); 
+0

Zaoszczędziłam mnóstwo czasu i energii! – user3687

Powiązane problemy