NSArray aggiungendo elementi
-
13-09-2019 - |
Domanda
devo creare un NSArray dinamica, cioè, non so la dimensione della matrice o quali elementi l'array sta per avere. Gli elementi devono essere aggiunti alla matrice dinamicamente. Ho guardato il riferimento di classe NSArray. C'è un metodo chiamato arrayWithObjects, che dovrebbe essere utilizzato al momento di inizializzare l'array. Ma io non so come ottenere quello che devo fare.
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);
}
Soluzione
Se si crea un NSArray
non sarà in grado di aggiungere elementi ad esso, dal momento che è immutabile. Si dovrebbe provare a utilizzare NSMutableArray
invece.
Inoltre, è invertita l'ordine di alloc
e init
. alloc
crea un'istanza e init
l'inizializza.
Il codice dovrebbe essere simile a questa (getData
supponendo che è una funzione globale):
NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
[stringArray addObject:getData(i)];
}
Altri suggerimenti
Ecco un altro modo per aggiungere oggetto in array se si sta lavorando con serie immutabile. Che è thread-safe.
È possibile utilizzare il metodo arrayByAddingObject
. Alcune volte è molto meglio. Ecco la discussione su di esso: NSMutableArray vs NSArray che è meglio
Converti la tua NSArray a NSMutableArray, e quindi è possibile aggiungere i valori in modo dinamico:
NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];