web-dev-qa-db-fra.com

Comparaison de chaînes en Objective-C

J'ai actuellement un serveur Web configuré avec lequel je communique via SOAP avec mon application iPhone. Je renvoie une chaîne contenant un GUID et lorsque j'essaie de comparez cela avec une autre chaîne, je reçois des résultats étranges.

Pourquoi cela ne ferait-il pas feu? Sûrement les deux cordes sont un match?

NSString *myString = @"hello world";

if(myString == @"hello world")
    return;
80
ingh.am

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

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

Vous pouvez utiliser une comparaison sensible à la casse ou insensible à la casse, selon vos besoins. La casse est comme ceci:

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

La casse est comme ceci:

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

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
3
Vikram Pote