2009-04-22 11 views
35

Tengo que crear un NSArray dinámico, es decir, no sé el tamaño de la matriz o los elementos que la matriz va a tener. Los elementos deben agregarse a la matriz dinámicamente. Miré la referencia de la clase NSArray. Hay un método llamado arrayWithObjects, que se debe usar en el momento de inicializar la matriz. Pero no sé cómo lograr lo que necesito hacer.Agregar elementos NSArray

tengo que hacer algo como lo siguiente:

NSArray *stringArray = [[NSArray init] alloc] ; 
for (int i = 0; i < data.size; i++){ 
    stringArray.at(i) = getData(i); 
} 

Respuesta

73

Si crea una NSArray usted no será capaz de añadir elementos a la misma, ya que es inmutable. Deberías intentar usar NSMutableArray en su lugar.

Además, ha invertido el orden de alloc y init. alloc crea una instancia y init lo inicializa.

El código sería algo como esto (suponiendo getData es una función global):

NSMutableArray *stringArray = [[NSMutableArray alloc] init]; 
for(int i=0; i< data.size; i++){ 
    [stringArray addObject:getData(i)]; 
} 
4

Aquí es otra forma de agregar objetos en serie si se está trabajando con el conjunto inmutable. Que es seguro para subprocesos

Puede usar el método arrayByAddingObject. Algunas veces es mucho mejor. Aquí está la discusión sobre el tema: NSMutableArray vs NSArray which is better

+0

'[gama arrayByAddingObject: @ "mažiukas"];' no agrega el nuevo elemento. –

1

Convertir su NSArray a NSMutableArray, y luego se puede añadir valores de forma dinámica:

NSMutableArray *mutableStringArray = [stringArray mutableCopy]; 
[mutableStringArray addObject:@"theNewElement"];