我有一个带有可访问方法的类,该方法传回NSString
当被叫时。
[MyClass getMyString]
该类中的字符串变量实际上是在didSelectRowAtIndexPath:
像这样的表的一部分:
myString = cell.textLabel.text;
当我通过调用该方法检索字符串时,我将其分配给调用它的类中的另一个字符串,并将其与我定义的字符串进行比较
NSString *mySecondString;
mySecondString = @"my value";
if(mySecondString == myString){
i = 9;
}
我已经单步执行了代码,每次计算 if 语句时,它都会跳过i=9
并转到下一个else if
陈述。为什么会这样呢?为什么他们不评估为相同的值?如果在调试期间将光标悬停在每个值上,它们将显示它们具有相同的值,但由于某种原因,代码不会按照我期望的那样执行并分配9
to i
.
有什么想法吗?
你假设 C==
运算符使字符串相等。事实并非如此。它执行指针相等(当在指针上调用时)。如果你想进行真正的字符串相等测试,你需要使用-isEqual:
方法(或专业化-isEqualToString:
当您知道两个对象都是字符串时):
if ([mySecondString isEqualToString:myString]) {
i = 9;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)