Comparer 2 strings

muqaddarmuqaddar Administrateur
14:09 modifié dans API AppKit #1
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 :

if ([[dict objectForKey:@"paysId"] isEqualToString stringSend])


me jette.

if ([[[dict objectForKey:@&quot;paysId&quot;] stringValue] isEqualToString stringSend])[/code]<br /><br />me jette.<br /><br />[code]if ([[dict objectForKey:@&quot;paysId&quot;] isEqualToString [stringSend stringValue]])


me jette.

Alors là , je sèche. :crackboom:-

Réponses

  • novembre 2004 modifié #2
    Très bonne question...

    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.

    <br />NSString* str1 = [NSString stringWithString:@&quot;str];<br />NSString* str2 = [NSString stringWithString:@&quot;str];<br />return (str1 == str2);<br />
    


    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.

    <br />NSString* str1 = [NSString stringWithString:@&quot;str];<br />NSString* str2 = [NSString stringWithString:@&quot;str];<br />return [str1 isEqualToString:str2];<br />
    


    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.
  • muqaddarmuqaddar Administrateur
    novembre 2004 modifié #3
    OK.
    Merci de ta réponse.
    Les ":" manquaient en effet. :( Pas glop

    Bien compris la comparaison des pointeurs ou de leurs contenus.
Connectez-vous ou Inscrivez-vous pour répondre.