7
votes

Comment ajouter un entier à un tableau?

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: xxx

mais Je suppose que je ne peux pas simplement ajouter des entiers comme: xxx

au moins le compilateur n'est pas satisfait de cela et me dit que je fais un casting sans avoir dit C'est donc.

Toutes les explications seraient très appréciées.


0 commentaires

3 Réponses :


7
votes

Vous devez utiliser Nsnumbers, je pense, essayez d'ajouter ces objets à votre tableau: [Numéro de nsnumberwithInteger: Myint]; XXX


2 commentaires

mservidio est correct. Je crois que la façon de penser ceci est parce que @ "2" est un objet nstring objet. Cependant, 2 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];



29
votes

Oui c'est vrai. Le compilateur n'acceptera pas votre code comme celui-ci. La différence est la suivante:

si vous écrivez @ "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>

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> xxx pré>

Pour revenir dans l'entier à nouveau, faites-le comme ça p> xxx pré>

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>

EDIT: strong> p>

Il est maintenant possible d'écrire le suivant P>

@[@1, @2];


6 commentaires

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 ).


Ok je ne savais pas ça. Où avez-vous cette information? Je voudrais en savoir plus à ce sujet.



4
votes

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];


0 commentaires