NSString 比较在 Objective-C 中不起作用

NSString comparison not working in Objective-C

我的 NSString 比较方法 'isEqualToString:' 有问题。我有两个(匹配的)字符串在执行 hte isEqualToString: 方法时不会作为 YES 返回。

if 语句中的代码永远不会执行。我还尝试将 \n 添加到 checkvalue 字符串,以防文本字符串中存在隐藏的控制代码。代码底部是调试中显示的变量 window.

NSString *text = [dict objectForKey:TEXT_STR];

NSLog(@"%@", [text dataUsingEncoding:NSUTF8StringEncoding]);

NSString *checkvalue = @”OVERTEMP”;

NSLog(@"%@", [checkvalue dataUsingEncoding:NSUTF8StringEncoding]);

if ( [text isEqualtoString:checkvalue] )

{
    // ... execute this code when the strings are equal
}

这里是调试器 Window 中显示的变量两个值,后跟来自 NSLog 语句的字符串:

text=(…NSCFString *) @”OVERTEMP”

checkvalue=(…NSCFContstantString *) @”OVERTEMP”

NSLog output for text:  <4f564552 54454d50 00000000 00>

NSLog output for checkvalue:  <4f564552 54454d50>

您的 text 有一些尾随 NUL。你可以 trim 他们:

text = [text stringByTrimmingCharactersInSet:
    [NSCharacterSet characterSetWithRange:NSMakeRange(0, 1)]];