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

标签 objective-c cocoa cocoa-touch nsstring string-comparison

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

相关文章:

ios - 发出过多 AFNetworking 请求时超时

cocoa - 如何判断 cocoa webview 何时更新

objective-c - 以编程方式创建的 NSButtonCell 在单击时不会突出显示

iphone - 当特定的 nsdate 已过时触发方法

objective-c - 将 UIImage 转换为 NSData

ios - EventKit 创建并自动生成 defaultCalendar

ios - 从客户端增加角标(Badge)计数而不是从有效负载接收计数

objective-c - Cocoa 中的菜单栏按钮面板?

ios - 用实例方法和类方法进行初始化

objective-c - UIButton 标题文本截断