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

And*_*rew 1 iphone objective-c nsstring ios

这是我的代码:

NSLog(@"name: %@", name);
    NSLog(@"service: %@", service.name);
    if (name == service.name) {
        NSLog(@"Test");
    }
Run Code Online (Sandbox Code Playgroud)

名字是"安德鲁的MacBook Pro".服务是"安德鲁的MacBook Pro"

然而,我没有从NSLog获得"测试".任何想法为什么会这样?

Adi*_*mro 18

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

请在此处查看非常有用的讨论:了解NSString比较


eri*_*ell 7

对于字符串比较,请使用 [name isEqualToString:service.name]

使用==将比较以查看两个指针是否指向同一个对象,而不是它们指向具有相同内容的对象.即使两个指针都包含相同的字符串,也不意味着它们指向同一个对象.

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


Abd*_*air 6

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