IOS isEqualToString不起作用

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 ",它涉及众多本地化问题.