2010-05-18 5 views
1

Je compairing deux chaînes. Il y a des égaux. isEqualToString: renvoie NSOrderedDescending. Je pensais que isEqualToString: renverrait NSOrderedSame. Quelqu'un peut-il m'expliquer pourquoi cela arrive?NSOrderedDescending au lieu de NSOrderedSame pour des chaînes égales, pourquoi?

exemple le cas ...

NSString *myString = @"1"; 

if ([myString isEqualToString:@"1"] == NSOrderedSame) { 
    // is NSOrderedSame 
} 

Depuis la rédaction de la question que je sais que je devrais utiliser à la place compare:. Il renverra NSOrderedSame. Mais j'aimerais savoir, encore, pourquoi cela arrive.

Merci
Ross

+1

Je supprime cela si je le pouvais. mais je suis incapable de ... – Ross

Répondre

6

Il ne retourne pas NSOrderedDescending, il retourne YES. Vérifiez le type de retour de cette méthode!

- (BOOL)isEqualToString:(NSString *)aString 

NSOrderedDescending est un NSComparisonResult, et arrive à avoir une valeur de 1 en raison de sa déclaration:

enum { 
    NSOrderedAscending = -1, 
    NSOrderedSame, 
    NSOrderedDescending 
}; 
typedef NSInteger NSComparisonResult; 

Ne pas mélanger et types match!

+0

oh. droite. Pardon. Merci. – Ross

Questions connexes