2011-12-24 53 views
1

这是我的代码:为什么这段代码不能识别NSString是否相等?

NSLog(@"name: %@", name); 
    NSLog(@"service: %@", service.name); 
    if (name == service.name) { 
     NSLog(@"Test"); 
    } 

名称是 “安德鲁的MacBook Pro的”。 服务是“安德鲁的MacBook Pro”

但我没有从NSLog得到“测试”。任何想法,为什么这可能是?

回答

18

使用[string isEqualToString:@"any string"]

看到这里一个非常有用的讨论:Understanding NSString comparison

+0

啊,当然。忘记了这种方法。谢谢。 – Andrew 2011-12-24 17:29:06

7

对于字符串比较,而不是是否使用[name isEqualToString:service.name]

使用==会比较,看看这两个指针指向同一个对象,他们指向具有相同内容的对象。即使两个指针都包含相同的字符串,这并不意味着它们指向相同的对象。

如果两个人都有同一辆车,所以有相同的钥匙来解锁它,两个钥匙是不相等的,不会打开两辆车;每个人只会打开它制造的汽车。如果一个人有一辆车,但有一个额外的钥匙,他们是平等的,因为他们打开同一辆车(物体)。你可以用这种方式来思考指针。

6

您正在比较两个对象不是两个字符串。尝试[string isEqualToString:@"another string"]

1
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"); 
相关问题