2010-10-25 10 views
5

Je veux sélectionner certains objets d'un tableau. Par conséquent, j'utilise les index de début et de fin de ma sélection.indexSetWithIndexesInRange ne fait pas ce que prévu

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

La première NSLog me donne

startIndex: 49
endIndex: 67

La deuxième NSLog me donne

Pourquoi ai-je le nombre 115 le plus élevé? Il devrait être 67. Bien sûr, les accidents app:

en raison de l'application Mettre fin exception uncaught 'NSRangeException', raison: '* - [NSArray objectsAtIndexes:]: indice 115 au-delà des limites [0 .. 96] '

Qu'est-ce que je fais mal?

Répondre

16

NSRange membres de » sont location et length, non start et end. Cela signifie que vous devez créer votre structure NSRange comme ceci:

NSMakeRange(startIndex, endIndex - startIndex); 
+0

Cela m'a économisé beaucoup de temps et d'énergie! – user3687