La comparaison de Chaînes dans le Cacao
J'ai essayé:
- (NSString*) generateString
{
NSString* stringToReturn = @"thisString";
return stringToReturn;
}
- (void) otherMethod
{
NSString *returnedString = [self generateString];
if (returnedString == @"thisString")
{ //Do this }
else if (returnedString == @"thatString")
{ //Do that }
}
Qui ne correspond jamais avec.
J'ai ensuite essayé
if ([returnedString compare:@"thisString"] == 1)
Mais la méthode de comparaison renvoie toujours 1 pour moi, même si l'on compare avec une autre chaîne.
Quelle est la manière correcte de le faire, et quels résultats puis-je m'attendre?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous êtes à l'aide de la
==
opérateur de comparer les deux pointeurs d'objet (de typeNSString *
). De sorte que renvoie la valeur true si les pointeurs sont les mêmes, pas lorsque les chaînes ont le même contenu. Si vous voulez comparer si deux chaînes sont les mêmes, vous devez utiliserisEqualToString:
ouisEqual:
(isEqual:
est plus général que cela fonctionne pour tous les types d'objets).Deuxième,
compare:
retourne0
(NSOrderSame
) quand ils sont le même, et1
(NSOrderedDescending
) lorsque le premier est plus grand que le second. Donc en fait il retourne 1 seulement quand elles sont différentes (en particulier, lorsque le premier est plus grand que le second).Lorsque l'on compare les deux chaînes identiques
compare
sera de retourNSOrderedSame
, qui est de 0. Il est également possible de retournerNSOrderedAscending
, -1, etNSOrderedDescending
, 1.Vous préférerez peut-être utiliser
isEqualToString
qui renvoie OUI ou NON.L'opérateur == lorsqu'il est appliqué à des objets de vérifier si les pointeurs sont égaux.
Vous devez utiliser
-compare
méthode ou l'un de ses compagnons -compare:options:
-compare:options:range:
ou-compare:options:range:locale:
qui retournent unNSComparisonResult
(NSOrderAscending
,NSOrderSame
,NSOrderDescending
)Si vous avez juste besoin de comparaison d'égalité, vous pouvez utiliser
-isEqualToString:
qui renvoie uneBOOL
valeur.