Why is this code not recognising the NSString as being equal?

时光总嘲笑我的痴心妄想 提交于 2020-01-18 17:59:09

问题


This is the code I have:

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

Name is "Andrew’s MacBook Pro". Service is "Andrew’s MacBook Pro"

And yet I don't get a "Test" from NSLog. Any ideas why this could be?


回答1:


use [string isEqualToString:@"any string"]

See a very useful discussion here: Understanding NSString comparison




回答2:


For string comparisons, use [name isEqualToString:service.name]

Using == will compare to see if both pointers point to the same object, not if they point to objects with the same contents. Even if both pointers contain the same string, that does not mean they point to the same object.

If two people both have the same car, and so have the same key to unlock it, both keys are not equal and will not open both cars; each will only open the car for which it was made. If one person has a car but has an extra key made, they are equal because they open the same car (object). You can think of the pointers in this way.




回答3:


You are comparing two objects not two string. Try [string isEqualToString:@"another string"].




回答4:


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");   


来源:https://stackoverflow.com/questions/8625936/why-is-this-code-not-recognising-the-nsstring-as-being-equal

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!