为什么这段代码不能识别NSString是否相等?
这是我的代码:
NSLog(@"name: %@", name); NSLog(@"service: %@", service.name); if (name == service.name) { NSLog(@"Test"); }
名字是“安德鲁的MacBook Pro”。 服务是“安德鲁的MacBook Pro”
然而,我没有从NSLog获得“测试”。 任何想法为什么会这样?
使用[string isEqualToString:@"any string"]
请在此处查看非常有用的讨论: 了解NSString比较
对于字符串比较,请使用[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");