2011-03-13 21 views
20

Tengo un NSMutableArray y necesito objetos [0: 5] solamente. ¿Hay una forma simple de cortar? ¿Puedo colocar todos los objetos después del índice? ¿Puedo copiar una sub-matriz a otra NSMutableArray?Cómo cortar NSMutableArray

+3

Gracias chicos, estaba viendo NSMutableArray y no los vi en la referencia. – Mark

Respuesta

61

Utilice el método de instancia - (NSArray *)subarrayWithRange:(NSRange)range.

Por ejemplo:

NSArray* slicedArray = [wholeArray subarrayWithRange:NSMakeRange(0, 5)]; 
+14

Tenga en cuenta que NSMakeRange (0,5) no significa 'rebanar posiciones 0 a 5', significa 'tomar una porción comenzando en 0 e incrementando en 5'. No hay diferencia con 0: 5, pero si lo hace 1: 5, la distinción se vuelve importante. –

+4

Sí, entonces usar 'NSMakeRange (1, 5)' significaría que 'slicedArray' contendría objetos de' wholeArray' en los índices 1 a 6. –

+2

Para evitar 'NSRangeException' para menos de 5 elementos, debe usar:' [ wholeArray subarrayWithRange: NSMakeRange (0, MAX (wholeArray.count, 5))] ' – Szu

16

veo James Bedford ya ha respondido cómo extraer una serie de índices. Para eliminar los objetos en un rango de un NSMutableArray, puede usar [wholeArray removeObjectsInRange:...]. Para eliminar todos los objetos después de un índice en particular, puede crear un rango apropiado como NSMakeRange(index, wholeArray.count - index).

+1

Conciso, simple y útil. gracias por la respuesta – mattsven