2009-04-22 14 views
35

Muszę utworzyć dynamiczną NSArray, to znaczy, nie wiem wielkości tablicy lub jakie elementy będzie mieć tablica. Elementy muszą być dynamicznie dodawane do tablicy. Spojrzałem na odwołanie do klasy NSArray. Istnieje metoda o nazwie arrayWithObjects, która powinna być używana w momencie inicjowania samej tablicy. Ale nie wiem, jak osiągnąć to, co muszę zrobić.NSArray dodawanie elementów

muszę zrobić coś jak następuje:

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

Odpowiedz

73

Jeśli utworzysz NSArray nie będzie mógł dodać elementy do niego, ponieważ jest niezmienna. Zamiast tego należy spróbować użyć NSMutableArray.

Również odwróciłeś kolejność alloc i init. alloc tworzy instancję i inicjuje ją init.

Kod będzie wyglądać mniej więcej tak (zakładając getData to funkcja globalna):

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

Oto kolejny sposób na dodanie obiektu w tablicy, jeśli pracujesz z niezmiennego tablicy. Które jest bezpieczne dla wątków.

Można użyć metody arrayByAddingObject. Czasami jest znacznie lepiej. Tutaj jest dyskusja o tym: NSMutableArray vs NSArray which is better

+0

'[array arrayByAddingObject: @ "mažiukas"];' nie dodać nowy element. –

1

Konwersja NSArray do NSMutableArray, a następnie można dodać wartości dynamicznie:

NSMutableArray *mutableStringArray = [stringArray mutableCopy]; 
[mutableStringArray addObject:@"theNewElement"]; 
Powiązane problemy