这是我的代码:为什么这段代码不能识别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