Objective-C accès, de modification des éléments d'un tableau dans un tableau multidimensionnel (NSArray)
Je suis en train de modifier une valeur dans un tableau multidimensionnel mais l'acquisition d'une erreur de compilateur:
warning: passing argument 2 of 'setValue:forKey:' makes pointer from integer without a cast
C'est le contenu de mon tableau:
NSArray *tableContent = [[NSArray alloc] initWithObjects:
[[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil],
[[NSArray alloc] initWithObjects:@"d",@"e",@"f",nil],
[[NSArray alloc] initWithObjects:@"g",@"h",@"i",nil],
nil];
C'est de cette façon que je suis en train de modifier la valeur:
[[tableContent objectAtIndex:0] setValue:@"new value" forKey:1];
Solution:
[[tableContent objectAtIndex:0] setValue:@"new val" forKey:@"1"];
Ainsi, le tableau de la clé est une chaîne de type un peu étrange, mais bon à savoir.
Vous devez vous connecter pour publier un commentaire.
Vous ne voulez pas
alloc+init
pour la sous-parce que les tableaux de conserver nombre de sous-ensembles sera trop élevé (+1 pour lealloc
, puis +1 nouveau comme il est inséré dans la partie extérieure du tableau).Vous êtes en train de créer immuable des tableaux, et d'essayer de changer les valeurs stockées dans les. Utilisation NSMutableArray à la place.
Vous souhaitez NSMutableArray de
insertObject:atIndex:
oureplaceObjectAtIndex:withObject:
(l'ancien va pousser l'élément existant en arrière si il en existe déjà un, alors que ce dernier va le remplacer mais ne fonctionne pas pour les indices qui ne sont pas déjà occupés). Le messagesetValue:forKey:
prend un type de valeur pour son premier argument et un NSString pour son deuxième. Vous êtes de passage un entier plutôt qu'un NSString, qui n'est jamais valide.setObject:atIndex:
pourNSMutableArray
, au lieu de cela, il estreplaceObjectAtIndex:withObject:
. developer.apple.com/mac/library/documentation/Cocoa/Reference/...Désolé pour la réponse 1 ans et demi, la vieille question 😀
J'ai eu le même problème, et je l'ai résolu en ne comptant que les éléments, puis faire
addObject
pour pousser l'élément du tableau