【问题标题】:IOS isEqualToString Not WorkingIOS isEqualToString 不工作
【发布时间】:2013-04-19 09:19:07
【问题描述】:

以下示例程序输出相同,但程序运行不正常。

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]];

如何在此处进行编辑?

【问题讨论】:

  • 您的字符串中可能有空格,请尝试删除多余的空格或换行符
  • 请考虑我的高度赞成的答案为复选标记!

标签: iphone ios objective-c nsstring nsfilemanager


【解决方案1】:

isEqualToString: 的文档表明您可能有问题:

比较使用字符串的规范表示,对于 一个特定的字符串是字符串的长度加上 Unicode 组成字符串的字符。当此方法比较两个 字符串,如果各个 Unicode 相同,则字符串为 相等,无论后备存储如何。 “字面”应用于 字符串比较意味着各种 Unicode 分解规则是 未应用和 Unicode 字符单独比较。 所以, 例如,“Ö”表示为组合字符序列“O” 并且变音符号不会与表示为一个 Unicode 的“Ö”相比较 字符

尝试使用(NSOrderedSame == [string1 localizedCompare:string2])

另外,如果您还没有,请查看处理大量本地化问题的 Apple 示例代码“International Mountains”。

【讨论】:

  • 非常感谢。 isEqualToStrings 工作正常。这里有同样的问题: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@",[pathi lastPathComponent]];如何在此处进行编辑?
  • @user2041226 [NSPredicate predicateWithFormat:@"name LIKE [cd] %@",[pathi lastPathComponent]]
【解决方案2】:

您是否尝试过将两个字符串都转换为 UTF-8,然后进行比较?我不知道这是否有效,这只是一个想法。

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2013-06-02
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多