106 votes

Comparaison de chaînes dans l'objectif C

J'ai actuellement une configuration de serveur Web que je communique via SOAP avec mon application iPhone. Je retourne un NSString contenant un GUID et quand j'essaie de le comparer avec un autre NSString j'obtiens des résultats étranges.

Pourquoi ça ne tirerait pas ? Sûrement les deux cordes sont assorties ?

NSString *myString = @"hello world";

if (myString == @"hello world")
    return;

251voto

jlehr Points 9809

Utilisez la méthode -isEqualToString: pour comparer la valeur de deux chaînes. L'utilisation de l'opérateur C == comparera simplement les adresses des objets.

if ([category isEqualToString:@"Some String"])
{
    // Do stuff...
}

54voto

mxg Points 4658

Vous pouvez utiliser une comparaison sensible à la casse ou insensible à la casse, selon ce dont vous avez besoin. La sensibilité à la casse est la suivante :

if ([category isEqualToString:@"Some String"])
{
   // Both strings are equal without respect to their case.
}

Insensible à la casse, c'est comme ça :

if ([category compare:@"Some String" options:NSCaseInsensitiveSearch] == NSOrderedSame)
{
   // Both strings are equal with respect to their case.
}

5voto

Vikram Pote Points 3185

Vous pouvez comparer la chaîne avec les fonctions ci-dessous.

NSString *first = @"abc";
NSString *second = @"abc";
NSString *third = [[NSString alloc] initWithString:@"abc"];
NSLog(@"%d", (second == third))  
NSLog(@"%d", (first == second)); 
NSLog(@"%d", [first isEqualToString:second]); 
NSLog(@"%d", [first isEqualToString:third]); 

Output will be :-
    0
    1
    1
    1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X