web-dev-qa-db-fra.com

Comment convertir int en string en Objective C: exemple de code

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";
70
john

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"])
32
grahamparks

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]
164
Scott

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 )

154
Robert

== ne devrait pas être utilisé pour comparer des objets dans votre if. Pour NSString, utilisez isEqualToString: pour les comparer.

12
Terry Wilcox
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];

int resultValue = val1 * val2;

textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
8
Amol

Convertissez simplement int en NSString utilisez:

  int x=10;

  NSString *strX=[NSString stringWithFormat:@"%d",x];
3
Ashwini Chougale