Je voudrais convertir un int
en un NSString
en Objective C.
Comment puis-je faire ceci?
objective-c
Yogini
la source
la source
NSString *strValue = @(myInt).stringValue;
stringValue
, mais tous ontdescription
- donc comme une bonne pratique, il vaut mieux s'habituer à utiliserdescription
(NSNumber
fait, pas besoin de s'inquiéter ici). Essayez ceci (description
imprimera la date, maisstringValue
plantera):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)
est une expression encadrée pour[NSNumber numberWithInt:]
et elle retournera toujours un NSNumber lorsqu'on lui donne un int.[NSNumber stringValue]
retournera toujours une NSString. Dans le code de votre commentaire, forcer le casting(id)
et l'assigner à un type différent est une erreur de programmation évidente: vous ne devriez jamais faire cela. C'est comme balancer une méthode et ensuite argumenter sur le fait que cette méthode ne fait pas ce qu'elle faisait à l'origine.!
) et vous comprendrez que vous l'avez fait de manière incorrecte dans Objective-C. Si l'objettest
n'a pas été créé par vous, ce n'est pas votre responsabilité. Vous pouvez essayer d'appelerisKindOfClass:
tous vos paramètres reçus, mais même cela peut être trompé (en passant une structure au lieu d'un NSObject par exemple). Alors ne le faites pas: documentez simplement explicitement les types attendus.(id)
est une erreur, c'était juste pour démontrer le point sur lequel l'OMIdescription
est préféréestringValue
(je me trompe peut-être, je n'ai pas programmé en ObjC depuis des années)la source
@(myInt)
est une expression encadrée , elle renvoie un NSNumber.C'est l'une des nombreuses manières.
la source
Si cette chaîne est destinée à être présentée à l'utilisateur final, vous devez utiliser
NSNumberFormatter
. Cela ajoutera des milliers de séparateurs et respectera les paramètres de localisation de l'utilisateur:Aux États-Unis, par exemple, cela créerait une chaîne
10,000
, mais en Allemagne, ce serait le cas10.000
.la source