【问题标题】:IOS NSPredicate Not WorkingIOS NSPredicate 不工作
【发布时间】:2013-04-26 10:57:25
【问题描述】:

以下示例程序:虽然相同的url找不到url,但程序运行不正常。

NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:kDocdir];
for (NSString *pathi in directoryEnumerator)
{
    NSLog(@"fileManager_url = %@",[self Doc_Del:pathi]);
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"url == %@",[self Doc_Del:pathi]];
    [fetchRequest setPredicate:predicate];
    NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:nil];


    Artist *url_Databse =  [self.fetchedResultsController  objectAtIndexPath:self.indexPath_k];
    NSLog(@"Database_url = %@",url_Databse.url);


    if ([fetchedObjects count] > 0) {
        NSLog(@"foundurl = %@",((Artist *)[fetchedObjects objectAtIndex:0]).url);
    }else{
        NSLog(@"url not found");
    }
}

输出:

2013-04-25 15:37:43.256 Player[36436:907] fileManager_url  = /alizée -öş mèxico - final j'en
2013-04-25 15:37:43.272 Player[36436:907] Database_url     = /alizée -öş mèxico - final j'en
2013-04-25 15:37:44.107 Player[36436:907] url not found

当 url 中有特殊字符时无法正常工作。为什么会这样?谢谢...

【问题讨论】:

  • 你试过把特殊字符放在单引号里吗?所以你的谓词是@"url = '%@'"。
  • 是的,我试过了。那样不行

标签: iphone ios sql nspredicate nsfilemanager


【解决方案1】:

HFS 文件系统使用“分解字符”,例如文件名中的é 存储为两个字符e+ ´(U+0301,COMBINING ACUTE ACCENT)。使用precomposedStringWithCanonicalMapping 规范化目录枚举中的文件名应该会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2013-06-02
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多