Mei*_*ans 6 cocoa cocoa-touch objective-c string-comparison nsstring
我有一个带有可访问方法的类,它NSString在调用时传回.
[MyClass getMyString]
Run Code Online (Sandbox Code Playgroud)
该类中的字符串变量实际上是在didSelectRowAtIndexPath:表的一部分中分配的,如下所示:
myString = cell.textLabel.text;
Run Code Online (Sandbox Code Playgroud)
当我通过调用该方法检索字符串时,我将其分配给调用它的类中的另一个字符串,并将其与我定义的字符串进行比较
NSString *mySecondString;
mySecondString = @"my value";
if(mySecondString == myString){
i = 9;
}
Run Code Online (Sandbox Code Playgroud)
我已经逐步完成了代码,每次评估if语句时,它都会跳过它i=9并转到下一个else if语句.为什么会这样?他们为什么不评价相同的价值?如果您在调试期间将光标悬停在每个值上,它们将显示它们具有相同的值,但由于某种原因,代码没有像我期望的那样执行并分配9给i.
有什么想法吗?
Lil*_*ard 17
您假设C ==运算符执行字符串相等.它没有.它执行指针相等(在指针上调用时).如果要进行真正的字符串相等测试,则需要使用该-isEqual:方法(或者-isEqualToString:当您知道两个对象都是字符串时使用特殊化):
if ([mySecondString isEqualToString:myString]) {
i = 9;
}
Run Code Online (Sandbox Code Playgroud)