Cela doit être assez basique, mais je me demandais comment ajouter un entier à un tableau?
Je sais que je peux ajouter des chaînes comme ceci: p> mais Je suppose que je ne peux pas simplement ajouter des entiers comme: p> au moins le compilateur n'est pas satisfait de cela et me dit que je fais un casting sans avoir dit C'est donc. P> Toutes les explications seraient très appréciées. p> p>
3 Réponses :
Vous devez utiliser Nsnumbers, je pense, essayez d'ajouter ces objets à votre tableau: [Numéro de nsnumberwithInteger: Myint];
mservidio est correct. Je crois que la façon de penser ceci est parce que @ "2" code> est un objet
nstring code> objet. Cependant,
2 code> est une valeur, pas un objet.
Pour développer, vous créez essentiellement une instance de l'objet NSNUMBER qui est une version d'objet de la primitive Int ou autre, puis ajoute cet objet à la matrice. En outre, pour récupérer la valeur primitive du tableau, utilisez [[MyARRAY ObjecteAindex: 0] IntTValue];
Oui c'est vrai. Le compilateur n'acceptera pas votre code comme celui-ci. La différence est la suivante:
si vous écrivez mais un tableau ne peut stocker que des objets (plus précis: les pointeurs à l'objet). Vous devez donc créer des objets qui stockent votre entier. p> Pour revenir dans l'entier à nouveau, faites-le comme ça p> J'espère que ma réponse vous aide à comprendre pourquoi il ne fonctionne pas. Vous ne pouvez pas lancer un entier à un pointeur. Et c'est l'avertissement que vous obtenez de xcode. P> Il est maintenant possible d'écrire le suivant P> @ "une chaîne" code>, c'est la même chose que si vous avez créé une chaîne et l'a certifiée. Vous créez donc un objet en utilisant
@ "une chaîne" code ". P>
@[@1, @2];
Merci, je pense que je comprends cela maintenant. Votre explication est très bonne!
Merci. La réponse du mservidio est absolument correcte. Mais j'aime toujours avoir une explication. ;-)
Juste une question de suivi: est-ce que "numéro" est stocké dans mon tableau un entier (int) ou une Nsinteger? Ou ça ne compte pas vraiment?
Pour autant que je sache la différence n'est qu'une différence de taille utilisée pour stocker cette valeur. J'utilise normalement INT. La seule raison pour moi: c'est moins à écrire. ;-) Peut-être qu'il y a quelqu'un ici qui peut expliquer la différend. Je ne peux pas.
C'est faux, les littéraux strings ne sont pas autoréliques. Ils ont une durée de stockage statique et le nombre de référence le plus élevé possible (qui indique que leur refcount ne peut même pas être diminué par libérant code>).
Ok je ne savais pas ça. Où avez-vous cette information? Je voudrais en savoir plus à ce sujet.
Vous pouvez également utiliser ceci si vous souhaitez utiliser Strings:
NSMutableArray *array = [[NSMutableArray alloc] init]; [array addObject:[NSString stringWithFormat:@"%d",1]]; [[array objectAtIndex:0] intValue];