2009-04-22 9 views
35

Je dois créer un NSArray dynamique, c'est-à-dire, je ne connais pas la taille du tableau ou les éléments que le tableau va avoir. Les éléments doivent être ajoutés dynamiquement au tableau. J'ai regardé la référence de classe NSArray. Il existe une méthode appelée arrayWithObjects, qui doit être utilisée lors de l'initialisation du tableau lui-même. Mais je ne sais pas comment réaliser ce que j'ai besoin de faire.NSArray ajouter des éléments

que je dois faire quelque chose comme ce qui suit:

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

Répondre

73

Si vous créez un NSArray vous ne serez pas en mesure d'ajouter des éléments, puisqu'il est immuable. Vous devriez essayer d'utiliser NSMutableArray à la place. En outre, vous avez inversé l'ordre alloc et init. alloc crée une instance et init l'initialise.

Le code ressemblerait à quelque chose comme ceci (en supposant getData est une fonction globale):

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

Voici une autre façon d'ajouter des objets dans le tableau si vous travaillez avec tableau immuable. Ce qui est thread safe.

Vous pouvez utiliser la méthode arrayByAddingObject. Parfois, c'est beaucoup mieux. Voici la discussion à ce sujet: NSMutableArray vs NSArray which is better

+0

'[tableau arrayByAddingObject: @ "mažiukas"],' ne pas ajouter le nouvel élément. –

1

Convertissez votre NSArray à NSMutableArray, et vous pouvez ajouter des valeurs dynamiquement:

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