Objective-C Language Comparaison de chaînes


Exemple

Les chaînes sont comparées pour l'égalité en utilisant isEqualToString:

L'opérateur == teste simplement l'identité de l'objet et ne compare pas les valeurs logiques des objets, il ne peut donc pas être utilisé:

NSString *stringOne = @"example";
NSString *stringTwo = [stringOne mutableCopy];

BOOL objectsAreIdentical = (stringOne == stringTwo);          // NO
BOOL stringsAreEqual = [stringOne isEqualToString:stringTwo]; // YES

L'expression (stringOne == stringTwo) teste si les adresses mémoire des deux chaînes sont identiques, ce qui n'est généralement pas ce que nous voulons.

Si les variables de chaîne peuvent être nil vous devez également prendre en compte ce cas:

BOOL equalValues = stringOne == stringTwo || [stringOne isEqualToString:stringTwo];

Cette condition renvoie YES lorsque les chaînes ont des valeurs égales ou que les deux sont nil .

Pour commander deux chaînes par ordre alphabétique, utilisez compare

NSComparisonResult result = [firstString compare:secondString];

NSComparisonResult peut être:

  • NSOrderedAscending : La première chaîne vient avant la deuxième chaîne.
  • NSOrderedSame : les chaînes sont égales.
  • NSOrderedDescending : la deuxième chaîne vient avant la première chaîne.

Pour comparer l’égalité entre deux chaînes, utilisez isEqualToString:

BOOL result = [firstString isEqualToString:secondString];

Pour comparer avec la chaîne vide ( @"" ), mieux vaut utiliser la length .

BOOL result = string.length == 0;