【问题标题】:Why is this code not recognising the NSString as being equal?为什么这段代码不能将 NSString 识别为相等?
【发布时间】:2011-12-24 17:26:05
【问题描述】:

这是我的代码:

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

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

但我没有从 NSLog 获得“测试”。任何想法为什么会这样?

【问题讨论】:

    标签: ios objective-c iphone nsstring


    【解决方案1】:

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

    在此处查看非常有用的讨论:Understanding NSString comparison

    【讨论】:

      【解决方案2】:

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

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

      如果两个人都拥有同一辆车,因此用相同的钥匙开锁,则两把钥匙不相等,不会打开两辆车;每个人只会打开制造它的汽车。如果一个人有一辆车,但有一把额外的钥匙,他们是平等的,因为他们打开的是同一辆车(物体)。你可以这样想指针。

      【讨论】:

        【解决方案3】:

        您正在比较两个对象而不是两个字符串。试试[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");   
          

          【讨论】:

            猜你喜欢
            • 2012-07-06
            • 1970-01-01
            • 1970-01-01
            • 2010-10-24
            • 1970-01-01
            • 1970-01-01
            • 2019-12-29
            • 2015-01-21
            相关资源
            最近更新 更多