iphone - ¿Cómo almaceno un NSRange en un NSMutableArray u otro contenedor?
cocoa cocoa-touch (4)
Esto es lo que quiero hacer:
NSRange r = NSMakeRange(0,5);
id a = [NSMutableArray a];
[a addObject: r]; // but NSRange is not a NSObject *
Con un booleano, usaría un código como este:
[a addObject: [NSNumber numberWithBool: YES]];
o con un número entero:
[a addObject: [NSNumber numberWithInteger: 3]];
Entonces, ¿cuál es el equivalente con un NSRange
? Lo que realmente no quiero hacer es crear mi propia subclase de NSObject
para lograr esto. Seguramente hay una manera con lo que Apple ya proporcionó?
Otra opción podría ser agregar esos rangos en un NSIndexSet
, dependiendo de cómo pretenda utilizarlos a continuación.
Si necesita almacenar el NSRange
en una lista de propiedades, también puede convertir un NSRange
en un NSString
utilizando la función NSStringFromRange
. Y luego, puede volver a convertir esa cadena en un rango utilizando la función NSRangeFromString
.
Use NSValue''s +valueWithRange:
Para recuperar la estructura de rango, use la propiedad rangeValue
.
[a addObject:[NSValue valueWithRange:r]];
...
NSRange r = a[4].rangeValue;
[NSValue valueWithRange:r];
y recuperarlo con:
NSRange r = [rangeObject rangeValue];