【问题标题】:Equal strings not equal? [duplicate]相等的字符串不相等? [复制]
【发布时间】:2012-10-26 07:13:17
【问题描述】:

可能重复:
Understanding NSString comparison in Objective-C

我在 Objective-c 中遇到了奇怪的事情,我正在尝试将 cell.label 与元素标题进行比较,它是字符串。确定它是否是我正在寻找的单元格。

NSLog(@"%@", cell.textLabel.text);
NSLog(@"%@", [_dropDownSelection1.elements[1] title]);
if(cell.textLabel.text == [_dropDownSelection1.elements[1] title]){
    NSLog(@"Positive");
}
else{
    NSLog(@"Negative");
}

NSLog 打印出两者中的文本完全相同,但我仍然总是以否定结尾...这是为什么呢?

【问题讨论】:

  • 尝试使用这种格式[foo isEqualToString:bar] 进行字符串比较,因为您正在比较文本本身

标签: objective-c ios nsstring


【解决方案1】:

您应该使用[cell.textLabel.text isEqualToString:[_dropDownSelection1.elements[1] title]] 来比较字符串。

【讨论】:

  • 奇怪。也试过这种方式。但结果仍然是一样的.. NSLog 打印两个值相同,但比较得到否定
  • 你能告诉我们 NSLog 打印什么吗?
  • 现在一切正常,刚刚添加了我的答案。
【解决方案2】:

您是在比较指针,而不是字符串。

请改用 IsEqual。

【讨论】:

    【解决方案3】:

    你不能这样比较它们。

    请参阅Objective-C docs 上的识别和比较字符串部分。

    【讨论】:

      【解决方案4】:

      这是对我有用的代码!我不知道为什么,但是如果没有初始化变量,我无法让它工作,即使使用上面提供的 isEqualToString。

      NSLog(@"CELL:%@", cell.textLabel.text);
      NSLog(@"ELEM:%@", [_dropDownSelection1.elements[1] title]);
      NSString *labl = cell.textLabel.text;
      NSString *tit = [_dropDownSelection1.elements[1] title];
      
      if([labl isEqualToString:tit])
      {
      
          NSLog(@"Positive");
      }
      else{
          NSLog(@"Negative");
      
      }
      

      【讨论】:

        【解决方案5】:

        比较两个字符串的方法是isEqualToString:

        你的代码是这样的

        NSLog(@"%@", cell.textLabel.text);
        NSLog(@"%@", [_dropDownSelection1.elements[1] title]);
        
        if(cell.textLabel.text isEqualToString:[_dropDownSelection1.elements[1] title])
        {
        NSLog(@"Positive");
        }
        else
        {
        NSLog(@"Negative");
        }
        

        【讨论】:

          猜你喜欢
          • 2015-09-25
          • 1970-01-01
          • 2014-07-19
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          • 1970-01-01
          • 2011-03-17
          相关资源
          最近更新 更多