Цель C - две равные строки не оцениваются как равные, даже если байты одинаковы - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть строка 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...