2010-07-29 19 views
43

Nuevo en Cocoa, y parece que falta algo.¿Cómo obtengo los primeros x elementos de un NSArray en Cocoa?

¿Cuál es la forma más elegante/idiomática de obtener los primeros x elementos de un NSArray como otro NSArray? Obviamente, puedo iterar a través de ellos y almacenarlos manualmente, pero parece que tiene que haber un método más estándar para hacer esto.

que estaba esperando que haya un -arrayWithObjectsInRange: o algo similar, pero no se ve nada ...

NSArray* largeArray...// Contains 50 items... 

NSArray* smallArray = // fill in the blank  

// smallArray contains first 10 items from largeArray 

Gracias!

+0

Para cualquier persona que está tratando de hacer lo mismo, pero comenzando con una matriz de tamaño desconocido, he hecho una pregunta muy similar aquí: http://stackoverflow.com/questions/17928973/how-do-i-get-the-first- x-elements-of-an-unknown-size-nsarray –

Respuesta

120

Puede usar subarrayWithRange:.

NSArray *smallArray = [largeArray subarrayWithRange:NSMakeRange(0, 10)]; 
+0

¿No debería ser NSMakeRange (0,9)? –

+12

@SeptiadiAgus: 'NSRange' tiene el formato' {starting index, length} ', así que si quieres los primeros 10 elementos, el segundo argumento es' 10'. – mipadi

+8

Tenga en cuenta que si largeArray no tiene x elementos, el programa se bloqueará. –

0

segundo parámetro es el número de elementos de matriz para incluir en el rango, no el 'a' Índice

18
firstNItems = [items subarrayWithRange:NSMakeRange(0, MIN(n, items.count))]; 
-1

En Swift 3 puede utilizar esta:

let smallArray = largeArray.prefix(10) 
+0

Pregunta pregunta por el objetivo c – ObjectNameDisplay

Cuestiones relacionadas