indexSetWithIndexesInRange no está haciendo lo esperado
-
26-09-2019 - |
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?
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