"Pointeur incompatible vers la conversion d'entiers initialisant 'int' avec une expression de type 'NSNumber *'"
Je suppose que c'est quelque chose de vraiment simple, mais je vais essayer d'obtenir un int que j'ai stockés dans un dictionnaire et de la ligne que j'utilise est-ce que..
int mapX = [NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
Mais il me donne l'erreur...
Incompatible pointeur de conversion d'entier en envoyant 'id' pour le paramètre
de type "int"
et
Incompatible pointeur de conversion d'entier initialisation 'int' avec un
expression de type 'NSNumber *';
Si j'essaie...
NSNumber *mapX = [NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
En gros, je reçois la même erreur. Je sais que je suis probablement juste de l'utilisation de la mauvaise syntaxe, mais je ne suis pas sûr de quelle autre façon de l'écrire.
Merci pour toute aide.
source d'informationauteur Phil | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
Un couple de points:
[NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
Retourne un
NSNumber*
que vous essayez de stocker dans un int.NSNumber* mapX = [NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
ne fonctionne pas, soit parce que
[templateObject valueForKey:@"mapX"]
n'est pas unint
. Vous ne pouvez stocker des objets dansNSDictionary
pas de types primitifs.Vous pourriez vouloir essayer (en Supposant que j'ai les types corrects)
la solution ci-dessus est en supposant que la templateObject valueForKey:@"mapX" renvoie un NSNumber. Si cela ne fonctionne pas, vous voulez les convertir en un NSNumber, l'utilisation de cette solution au lieu de cela:
Typecasting en ObjC est la.pire.
n'a pas de sens pour deux raisons (pensez-y pour un moment), mais
devrait fonctionner en supposant
[templateObject valueForKey:@"mapX"]
est soit unNSNumber
ou unNSString
instance.Vous avez deux problèmes. Tout d'abord,
[templateObject valueForKey:@"mapX"]
retourne unid
qui est un pointeur vers un Objectif-C objet, pas unint
. Et depuis le-[NSNumber numberWithInt:]
méthode prend unint
paramètre, en essayant de convertir unid
à unint
est une erreur.Le deuxième problème, c'est que vous essayez de convertir le résultat de
[NSNumber numberWithInt:...]
à unint
qui est de nouveau le même problème:-[NSNumber numberWithInt:]
retourne un pointeur à uneNSNumber
objet, qui n'est pas uneint
.En supposant que la valeur stockée dans votre dictionnaire est en fait un
NSNumber
ce que vous voulez vraiment, c'est ceci:Ou de façon plus succincte:
J'espère que ce sera utile: