Comparer 2 strings
muqaddar
Administrateur
Bon.
Je viens de m'arracher les cheveux (pas grave, ils sont très denses) pour essayer de comparer 2 strings. L'une arrive ds la méthode : sendString.
L'autre vient d'un dico : paysId.
Il semble que ça soit plus complexe.
Ici, je compare 2 objets, donc je dois utiliser "isEqualToString" logiquement et non "=="
Pourtant :
me jette.
me jette.
Alors là , je sèche. :crackboom:-
Je viens de m'arracher les cheveux (pas grave, ils sont très denses) pour essayer de comparer 2 strings. L'une arrive ds la méthode : sendString.
L'autre vient d'un dico : paysId.
Il semble que ça soit plus complexe.
Ici, je compare 2 objets, donc je dois utiliser "isEqualToString" logiquement et non "=="
Pourtant :
if ([[dict objectForKey:@"paysId"] isEqualToString stringSend])
me jette.
if ([[[dict objectForKey:@"paysId"] stringValue] isEqualToString stringSend])[/code]<br /><br />me jette.<br /><br />[code]if ([[dict objectForKey:@"paysId"] isEqualToString [stringSend stringValue]])
me jette.
Alors là , je sèche. :crackboom:-
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
En fait le "==" compare les pointeurs, c'est à dire qu'il vérifie si tu as affaire au même objet, et non un objet qui contient des valeurs similaires.
Ce code reverra NO; car tu as affaire à deux objets différents, même si les valeurs qui y sont contenues sont équivalentes. "==" compare les pointeurs.
Ceci renverra YES, car les valeurs contenues sont équivalentes. En fait le isEqual se base non pas sur le pointeur, mais compare deux nombres qu'il obtient en envoyant un message "-hash" aux deux objets qui doivent être comparés, et renvoie YES si les deux hash sont identiques. En principe chaque classe doit implémenter son hash, qui doit être calculé en fonction des variables d'instance de l'objet. Dans le cas de str1 et str2, les valeurs sont équivalentes donc le hash est identique.
Merci de ta réponse.
Les ":" manquaient en effet. Pas glop
Bien compris la comparaison des pointeurs ou de leurs contenus.