比较两个NSString对象时,如果“a == b”为false
我有一个类的一个可访问的方法,传回一个NSString被调用。 
 [MyClass getMyString] 
 该类中的stringvariables实际上被分配在表的didSelectRowAtIndexPath:部分中,如下所示: 
 myString = cell.textLabel.text; 
当我通过调用该方法来检索string时,我将其分配给调用它的类中的另一个string,并将其与我定义的string进行比较
 NSString *mySecondString; mySecondString = @"my value"; if(mySecondString == myString){ i = 9; } 
 我已经遍历代码,并且每次评估if语句时,都会跳过i=9并转到下一个else if语句。 为什么会这样? 为什么他们不评价是相同的价值? 如果你在debugging过程中将光标hover在每个值上,它们将显示它们具有相同的值,但是由于某种原因,代码没有如我所期望的那样执行,并将9赋给i 。 
有什么想法吗?
 你假设C ==操作符做string相等。 它不。 它做指针相等(当在指针上调用时)。 如果你想做一个真正的string相等性testing,你需要使用-isEqual:方法(或者当你知道两个对象都是string的时候,使用-isEqual: : 
 if ([mySecondString isEqualToString:myString]) { i = 9; } 
您正在比较指向string的指针,而不是string本身。 你需要改变你的代码
 if (if([mySecondString isEqualToString:myString]) { .... } 
你不能用'=='比较两个NSString
你应该使用[NSString isEqualToString:(NSString *)]来比较两个string
你不能使用“==”比较这两个string,这是为int和其他值。 你可以使用下面的代码来比较两个string
if([Firststring isEqualToString:Secondstring]){
  NSLog(@"Hello this both string is same "); 
}
 这是一个指针的基本概念,你错过了。  (是的, myString和mySecondString是指向string的指针)。 
 现在, if(mySecondString == myString)只有在两个指针指向相同的位置时才会if(mySecondString == myString) TRUE 。  (他们不会在大多数情况下) 
 你应该这样做if ([mySecondString isEqualToString:myString]) ,这将比较你的两个string的内容是否相等。