J'essaie de convertir un int en chaîne mais j'ai des problèmes. J'ai suivi l'exécution à travers le débogueur et la chaîne 'myT' a la valeur 'sum' mais l'instruction 'if' ne fonctionne pas correctement si 'sum' vaut 10,11,12. Ne devrais-je pas utiliser un type primitif int pour stocker le numéro? De plus, les deux méthodes que j'ai essayées (voir le code commenté) ne parviennent pas à suivre le vrai chemin de l'instruction 'if'. Merci!
int x = [my1 intValue];
int y = [my2 intValue];
int sum = x+y;
//myT = [NSString stringWithFormat:@"%d", sum];
myT = [[NSNumber numberWithInt:sum] stringValue];
if(myT==@"10" || myT==@"11" || myT==@"12")
action = @"numGreaterThanNine";
La version commentée est la manière la plus correcte de le faire.
Si vous utilisez le ==
opérateur sur les chaînes, vous comparez les adresses des chaînes (où elles sont allouées en mémoire) plutôt que les valeurs des chaînes. C'est très utile occasionnellement (cela indique que vous avez exactement le même objet chaîne), mais vous voulez comparer les valeurs 99% du temps, ce que vous aimez ainsi:
if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])
Si vous avez juste besoin d'un int pour une chaîne, comme vous le suggérez, j'ai trouvé le moyen le plus simple de procéder comme suit:
[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]
Vous pouvez utiliser des littéraux, c'est plus compact.
NSString* myString = [@(17) stringValue];
(Box en tant que NSNumber et utilise sa méthode stringValue )
==
ne devrait pas être utilisé pour comparer des objets dans votre if
. Pour NSString
, utilisez isEqualToString:
pour les comparer.
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];
int resultValue = val1 * val2;
textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
Convertissez simplement int
en NSString
utilisez:
int x=10;
NSString *strX=[NSString stringWithFormat:@"%d",x];