目标C中两个相等的字符串即使字节相同也不会求相等

时间:2019-04-04 12:22:38

标签: objective-c utf-8 nsstring nsstringencoding

我有一个product字符串:

NSString* product = models[[[peripheral identifier] UUIDString]];

在调试器中,我可以打印:

po product
>>> X3

我可以检查字节:

po [product dataUsingEncoding:NSUTF8StringEncoding]
>>> <5833>

我还可以检查文字字符串@"X3"的字节:

po [@"X3" dataUsingEncoding:NSUTF8StringEncoding]
>>> <5833>

我得到相同的输出。 但是,当我尝试这样做时:

[product isEqualToString:@"X3"]
>>> <nil>

我得到nil。有没有搞错!?我可以理解何时有隐藏字符或某些东西,但是当字节求值到同一件事时,我就感到困惑。

我什至可以做到:

NSData *d = [product dataUsingEncoding:NSUTF8StringEncoding];
NSData *d2 = [@"X3" dataUsingEncoding:NSUTF8StringEncoding];
po [d isEqualToData:d2]
>>> YES

0 个答案:

没有答案