Obecnie mam skonfigurowany serwer sieciowy, który komunikuję się za pośrednictwem protokołu SOAP z moją aplikacją na iPhone'a. Zwracam ciąg zawierający identyfikator GUID i gdy próbuję porównać ten ciąg z innym ciągiem, otrzymuję dziwne wyniki.
Dlaczego to się nie pali? Z pewnością te dwie struny pasują do siebie?
NSString *myString = @"hello world";
if(myString == @"hello world")
return;
objective-c
nsstring
ingh.am
źródło
źródło
Odpowiedzi:
Użyj
-isEqualToString:
metody, aby porównać wartości dwóch ciągów. Użycie==
operatora C spowoduje po prostu porównanie adresów obiektów.if ([category isEqualToString:@"Some String"]) { // Do stuff... }
źródło
W zależności od potrzeb możesz użyć porównania z rozróżnianiem wielkości liter lub bez uwzględniania wielkości liter. Rozróżnianie wielkości liter wygląda tak:
if ([category isEqualToString:@"Some String"]) { // Both strings are equal without respect to their case. }
Niewrażliwość na wielkość liter wygląda tak:
if ([category compare:@"Some String" options:NSCaseInsensitiveSearch] == NSOrderedSame) { // Both strings are equal with respect to their case. }
źródło
Możesz porównać ciąg z poniższymi funkcjami.
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
źródło