以下示例程序输出相同,但程序无法正常工作。
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager]
enumeratorAtPath:kDocdir];
for (NSString *pathi in directoryEnumerator)
{
NSString *fileName_Manager = [pathi lastPathComponent];
NSLog(@"fileName_Manager = %@",fileName_Manager);
Artist *name_Databse = [self.fetchedResultsController
objectAtIndexPath:IndexPath];
NSLog(@"name_Databse = %@",name_Databse.name);
if ([fileName_Manager isEqualToString:name_Databse.name]) {
NSLog(@"Same Name");
}else{
NSLog(@"Different Name");
}
}
输出:
2013-04-25 15:37:43.256 Player[36436:907] fileName_Manager = alizée - mèxico - final j'en
2013-04-25 15:37:43.272 Player[36436:907] name_Databse = alizée - mèxico - final j'en
2013-04-25 15:37:44.107 Player[36436:907] Different Name
名称中的特殊字符时,无法正常工作。为什么会这样? 谢谢......
在这里遇到同样的问题:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@",[pathi lastPathComponent]];
如何在此处进行编辑?
答案 0 :(得分:12)
isEqualToString:
的文档表明您可能遇到问题:
比较使用字符串的规范表示,用于 特定字符串是字符串的长度加上Unicode 组成字符串的字符。当这个方法比较两个 字符串,如果单个Unicodes是相同的,那么字符串是 等于,无论后备商店。适用于“文字” 字符串比较意味着各种Unicode分解规则 未应用,并且单独比较Unicode字符。的所以, 例如,“Ö”表示为组合字符序列“O” 和umlaut不会比较等于表示为一个Unicode的“Ö” 字符强>
尝试使用(NSOrderedSame == [string1 localizedCompare:string2])
此外,如果您还没有,请查看Apple示例代码“国际山脉”,该代码处理众多本地化问题。
答案 1 :(得分:-1)
您是否尝试将两个字符串转换为UTF-8然后进行比较?我不知道这是否有效,这只是一个想法。