2010-10-25 27 views
5

Desidero selezionare alcuni oggetti da una matrice. Pertanto sto usando gli indici di inizio e fine della mia selezione.indexSetWithIndexesInRange non sta facendo ciò che ci si aspetta

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

Il primo NSLog mi dà

startIndex: 49
endIndex: 67

Il secondo NSLog mi dà

Perché ho il 115 come numero più alto? Dovrebbe essere 67. Ovviamente l'applicazione si blocca:

terminazione app a causa di eccezione non identificata 'NSRangeException', la ragione: '* - [NSArray objectsAtIndexes:]: indice 115 al di là di limiti [0 .. 96] '

Cosa sto facendo male?

risposta

16

NSRange membri 's sono location e length, non start e end. Questo significa che devi creare la tua struttura NSRange in questo modo:

NSMakeRange(startIndex, endIndex - startIndex); 
+0

Questo mi ha risparmiato un sacco di tempo ed energia! – user3687

Problemi correlati