Я сравниваю две строки, используя метод isEqual
, и он дает NO
.
if ([trie.name isEqual:string]) {
isFound = YES;
break;
}
trie.name
- это строка, инициализированная с использованием [[NSString alloc] initWithCharacters:&uchar length:ucharLen]
, где uchar
- это unichar
.string
- это постоянная строка @"N"
.Я проверил значения хэша, и оба отличаются.Я не уверен, почему создание строки с использованием другого инициализатора дает разные хэш для одного и того же значения строки.В этом случае, как проверить равенство строк?
Пожалуйста, смотрите прикрепленный скриншот переменных отладки.
В настоящее время я использую код:
NSString *string = @"Pirates";
unichar uchar = [string characterAtIndex:0];
size_t ucharLen = sizeof(uchar);
NSString *str = [[NSString alloc] initWithCharacters:&uchar length:ucharLen];
XCTAssertTrue([str isEqual:@"P"]);
Если я дал length:
как 1, он работает правильно.Как получить длину unichar
.Всегда ли это будет 1
, чтобы я мог жестко кодировать 1
в этом случае?