2009-04-22 5 views
35

Devo creare un NSArray dinamico, ovvero non conosco la dimensione dell'array o quali elementi avrà la matrice. Gli elementi devono essere aggiunti all'array in modo dinamico. Ho esaminato il riferimento alla classe NSArray. Esiste un metodo chiamato arrayWithObjects, che dovrebbe essere utilizzato al momento dell'inizializzazione dell'array stesso. Ma non so come ottenere ciò che devo fare.NSArray che aggiunge elementi

Ho bisogno di fare qualche cosa come il seguente:

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

risposta

73

Se si crea un NSArray non sarà in grado di aggiungere elementi ad esso, dal momento che è immutabile. Dovresti provare a utilizzare NSMutableArray.

Inoltre, è stato invertito l'ordine di alloc e init. alloc crea un'istanza e init lo inizializza.

Il codice dovrebbe essere simile a questa (supponendo getData è una funzione globale):

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

Ecco un altro modo per aggiungere oggetto in array se si sta lavorando con serie immutabile. Quale è thread-safe.

È possibile utilizzare il metodo arrayByAddingObject. Alcune volte è molto meglio. Ecco la discussione su di esso: NSMutableArray vs NSArray which is better

+0

'[gamma arrayByAddingObject: @ "mažiukas"];' non aggiunge il nuovo elemento. –

1

Convertire tua NSArray a NSMutableArray, e quindi è possibile aggiungere i valori in modo dinamico:

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