【发布时间】:2020-01-22 07:49:12
【问题描述】:
我正在使用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了吗?
【问题讨论】:
-
看来您的问题不在于比较字符串。这是使用
[[NSString alloc] initWithCharacters:&uchar length:ucharLen]并没有得到预期的结果。您应该更新您的问题,显示用于创建字符串的所有相关代码。 -
@rmaddy 是的,问题在于初始化程序中的长度。我已经更新了问题。
-
知道了。
initWithCharacters:采用 C 数组。
标签: objective-c nsstring