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);
}
È stato utile?

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"];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top