【问题标题】:Search string predicate搜索字符串谓词
【发布时间】:2012-10-23 00:30:27
【问题描述】:

我正在尝试使用 NSMetaDataQuery 创建搜索查询并部署如下谓词:

NSString * format = @"kMDItemDisplayName like[cd] %@";
NSPredicate * compPred = [NSPredicate predicateWithFormat:format,[NSString stringWithFormat:@"%@*",self.searchString]];

我面临的问题是:

假设我有一个应用名称:谷歌浏览器。

如果我搜索“google”作为搜索字符串,我可以得到结果,即“Google Chrome”,但如果我搜索“chrome”,我无法搜索“Google Chrome”。

类似地,如果搜索字符串是“Suhail”,显示结果是“Suhail hats no one”, 但如果搜索字符串是“hates”,结果会显示任何内容。

还有一个案例: 假设文件名为“faMee”。

我搜索“amee”,结果什么都没有。 我搜索“mee”,结果什么都没有,但在聚光灯下,我搜索“mee”,它显示文件“faMee”。

请有任何建议。

【问题讨论】:

    标签: macos cocoa nspredicate spotlight nsmetadataquery


    【解决方案1】:

    在查询中不要使用“喜欢”,而是使用“包含”。 请仔细阅读 NSPredicate Apple 文档和查询示例。

    莫辛

    【讨论】:

    • 未知类型的 NSComparisonPredicate 给 NSMetadataQuery (kMDItemDisplayName CONTAINS[cd] "s"),如果我使用 contains 而不是 like :(
    【解决方案2】:
    NSPredicate * compPred = [NSPredicate predicateWithFormat:format,[NSString stringWithFormat:@"*%@*",self.searchString]];
    

    试试这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2023-03-28
      相关资源
      最近更新 更多