Comparaison de 2 strings qui ne passe pas
muqaddar
Administrateur
Salut,
Je cherche à comparer 2 strings :
Ici, j'obtiens le même chiffre (qui est en fait une string) : 4.
A la suite, je fais :
Or , le toto ne s'affiche jamais. Pourtant, je suis bien avec 2 types strings.
Une idée ?
Je cherche à comparer 2 strings :
<br />NSLog (@"paysId : %@", paysId);<br />NSLog (@"dictPays objectForKey : %@", [[dictPays objectForKey:@"paysId"] description]);<br />
Ici, j'obtiens le même chiffre (qui est en fait une string) : 4.
A la suite, je fais :
<br />if ([[[dictPays objectForKey:@"paysId"] description] isEqualToString: paysId]) {<br /> NSLog (@"toto");<br />}
Or , le toto ne s'affiche jamais. Pourtant, je suis bien avec 2 types strings.
Une idée ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc : [[dictPays objectForKey:@paysId] isEqualToString: paysId]
Si [dictPays objectForKey:@paysId] est par exemple un NSNumber tu peux par exemple utiliser stringValue:
[[[dictPays objectForKey:@paysId] stringValue] isEqualToString: paysId]
Dans tous les cas tu dois savoir que description est la méthode utilisée par NSLog dans un cas genre: NSLog(@description %@",string)
Tu peux le tester toi même en ajoutant - (NSString*) description dans l'une de tes classes que tu affiches ensuite: NSLog(@classe:%@",unpointeursurlaclasse);
NSLog(@description %@",string) n'est qu'un raccourci vers NSLog(@description %@",[string description])
Alors même si je fais :
if ([[[dictPays objectForKey:@paysId] stringValue] isEqualToString: actuelPaysId])
ça ne marche pas et ne rentre pas dans le if ! Je ne vois pas pourquoi.
Les 2 valeurs retournées sont bien les mêmes :
dictPays objectForKey : 4
actuelPaysId : 4
actuelPaysId est aussi une string...
Pourquoi comparer un entier avec un chaine.... ?
if ([[dictPays objectForKey:@paysId] intValue] == 4)
Oui, ça donne tjs 4.
Parce que je lui envoie une string (enfin je pense) , tient bonne question :
[self loadDataWithId: [tempDict objectForKey:@paysId]];
Ici paysId est un number, mais ma fonction étant définie ainsi :
- (void)loadDataWithId:(NSString *)actuelPaysId
Je pensais que ça me le convertissait en string à l'arrivée, ai-je tort ?
Merci à toi mikael !
[self loadDataWithId: [[tempDict objectForKey:@paysId] stringValue];
Je pensais qu'il le convertissait bêtement à la réception, puisque le prog ne bronchait pas sur le type reçu...
merci !