2010-10-25 11 views
5

Quiero seleccionar algunos objetos de una matriz. Por lo tanto estoy usando índices de inicio y final de mi selección.indexSetWithIndexesInRange no está haciendo lo que se esperaba

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

La primera NSLog me da

startIndex: 49
endIndex: 67

El segundo NSLog me da

¿Por qué tengo 115 como el número más alto? Debe ser 67. Por supuesto, la aplicación se bloquea:

Terminación de aplicación debido a excepción no detectada 'NSRangeException', razón: ' * - [NSArray objectsAtIndexes:]: Índice 115 allá de los límites [0 .. 96] '

¿Qué estoy haciendo mal?

Respuesta

16

NSRange miembros 's son location y length, no start y end. Esto significa que debe crear su estructura NSRange de la siguiente manera:

NSMakeRange(startIndex, endIndex - startIndex); 
+0

¡Esto me ahorró mucho tiempo y energía! – user3687

Cuestiones relacionadas