gpt4 book ai didi

objective-c - 如果比较两个 NSString 对象时 "a == b"为假

转载 作者:太空狗 更新时间:2023-10-30 03:39:13 25 4
gpt4 key购买 nike

我有一个带有可访问方法的类,该方法在调用时返回 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com