web-dev-qa-db-fra.com

Est-il possible de caster un NSInteger en NSNumber?

Question rapide - est-il possible de convertir un NSInteger en un objet NSNumber? J'ai besoin de convertir la balise d'un objet UIImageView en un objet NSNumber car je dois le passer comme argument à une fonction.

38
Fitzy

Vous ne pouvez pas cast car NSInteger n'est pas un objet, juste un alias pour un type intégré. Vous pouvez toujours créer un nouvel objet NSNumber à partir de NSInteger, comme ceci:

NSNumber *myNum = @(myNsIntValue);

ou dans la version précédente du compilateur, utilisez

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
104
dasblinkenlight

puisque Apple LLVM Compiler 4.0, il existe un moyen plus simple de créer un objet NSNumber:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);
18
Brian

C'est la réponse la plus correcte et elle ne produira pas d'erreur inattendue.

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

Parce que le doc a dit:

"numberWithInteger: crée et renvoie un objet NSNumber contenant une valeur donnée, le traitant comme un NSInteger."

"numberWithInt: crée et renvoie un objet NSNumber contenant une valeur donnée, le traitant comme un entier signé."

7
Kevin