Pregunta

Quiero seleccionar algunos objetos a partir de una matriz. Por lo tanto estoy usando comienzan y terminan índices de mi selección.

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

El primer NSLog me da

  

startIndex: 49
  endIndex: 67

El segundo NSLog me da

  

115

¿Por qué tengo 115 como 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]'

Lo que estoy haciendo mal?

¿Fue útil?

Solución

Los miembros de NSRange son location y length, no start y end. Esto significa que necesita para crear su estructura NSRange como esto:

NSMakeRange(startIndex, endIndex - startIndex);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top