這是我的代碼:爲什麼這段代碼不能識別NSString是否相等?
NSLog(@"name: %@", name);
NSLog(@"service: %@", service.name);
if (name == service.name) {
NSLog(@"Test");
}
名稱是 「安德魯的MacBook Pro的」。 服務是「安德魯的MacBook Pro」
但我沒有從NSLog得到「測試」。任何想法,爲什麼這可能是?
這是我的代碼:爲什麼這段代碼不能識別NSString是否相等?
NSLog(@"name: %@", name);
NSLog(@"service: %@", service.name);
if (name == service.name) {
NSLog(@"Test");
}
名稱是 「安德魯的MacBook Pro的」。 服務是「安德魯的MacBook Pro」
但我沒有從NSLog得到「測試」。任何想法,爲什麼這可能是?
使用[string isEqualToString:@"any string"]
看到這裏一個非常有用的討論:Understanding NSString comparison
對於字符串比較,而不是是否使用[name isEqualToString:service.name]
使用==
會比較,看看這兩個指針指向同一個對象,他們指向具有相同內容的對象。即使兩個指針都包含相同的字符串,這並不意味着它們指向相同的對象。
如果兩個人都有同一輛車,所以有相同的鑰匙來解鎖它,兩個鑰匙是不相等的,不會打開兩輛車;每個人只會打開它製造的汽車。如果一個人有一輛車,但有一個額外的鑰匙,他們是平等的,因爲他們打開同一輛車(物體)。你可以用這種方式來思考指針。
您正在比較兩個對象不是兩個字符串。嘗試[string isEqualToString:@"another string"]
。
In Objective C use [string1 isEqualToString:@"string2"]; for string comparison.
Here is the code :
NSLog(@"name: %@", name);
NSLog(@"service: %@", service.name);
if ([name isEqualToString:service.name])
NSLog(@"Strings are Equal");
else
NSLog(@"Strings are Not Equal");
啊,當然。忘記了這種方法。謝謝。 – Andrew 2011-12-24 17:29:06