我有一个带有可访问方法的类,该方法在调用时返回 NSString
。
[MyClass getMyString]
该类中的字符串变量实际上是在表的 didSelectRowAtIndexPath:
部分分配的,如下所示:
myString = cell.textLabel.text;
当我通过调用该方法检索字符串时,我将它分配给调用它的类中的另一个字符串,并将它与我定义的字符串进行比较
NSString *mySecondString;
mySecondString = @"my value";
if(mySecondString == myString){
i = 9;
}
我单步执行了代码,每次它计算 if 语句时,它都会直接跳过 i=9
并转到下一个 else if
语句。为什么会这样?他们为什么不评估为相同的值(value)?如果您在调试期间将光标悬停在每个值上,它们将显示它们具有相同的值,但由于某种原因,代码没有像我期望的那样执行并将 9
分配给 我
。
有什么想法吗?
最佳答案
您假设 C ==
运算符执行字符串相等。它没有。它做指针相等(当调用指针时)。如果你想做一个真正的字符串相等性测试,你需要使用 -isEqual:
方法(或者当你知道两个对象都是字符串时使用专门化的 -isEqualToString:
):
if ([mySecondString isEqualToString:myString]) {
i = 9;
}
关于objective-c - 如果比较两个 NSString 对象时 "a == b"为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598599/