Je dois créer un NSArray dynamique, c'est-à-dire que je ne connais pas la taille du tableau ou quels éléments 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 au moment de l'initialisation du tableau lui-même. Mais je ne sais pas comment réaliser ce que je dois faire.
Je dois faire quelque chose comme ceci:
NSArray *stringArray = [[NSArray init] alloc] ;
for (int i = 0; i < data.size; i++){
stringArray.at(i) = getData(i);
}
Si vous créez un NSArray
, vous ne pourrez pas y ajouter d'éléments, car il est immuable. Vous devriez essayer d'utiliser NSMutableArray
à la place.
Vous avez également inversé l'ordre de alloc
et init
. alloc
crée une instance et init
l'initialise.
Le code ressemblerait à ceci (en supposant que getData
est une fonction globale):
NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
[stringArray addObject:getData(i)];
}
Voici une autre façon d'ajouter un objet dans un tableau si vous travaillez avec un tableau immuable. Ce qui est sûr pour les threads.
Vous pouvez utiliser la méthode arrayByAddingObject
. Parfois, c'est beaucoup mieux. Voici une discussion à ce sujet: NSMutableArray vs NSArray qui est mieux
Convertissez votre NSArray en NSMutableArray, puis vous pouvez ajouter des valeurs de manière dynamique:
NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];