use*_*226 3 iphone objective-c nsstring nsfilemanager ios
以下示例程序输出相同,但程序无法正常工作.
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");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
名称中的特殊字符时无法正常工作.为什么会这样?谢谢 ...
这里有同样的问题:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@",[pathi lastPathComponent]];
Run Code Online (Sandbox Code Playgroud)
我如何在这里进行编辑?
GoZ*_*ner 12
该文档isEqualToString:表明您可能遇到问题:
比较使用字符串的规范表示,对于特定字符串,字符串的长度加上构成字符串的Unicode字符.当此方法比较两个字符串时,如果单个Unicodes相同,则字符串相等,而不管后备存储.应用于字符串比较时,"Literal"表示不应用各种Unicode分解规则,并且单独比较Unicode字符.因此,例如,"Ö"表示为组合字符序列"O",而变音符号不会比较等于表示为一个Unicode字符的"Ö".
尝试使用 (NSOrderedSame == [string1 localizedCompare:string2])
此外,如果您还没有,请查看Apple示例代码" International Mountains ",它涉及众多本地化问题.