在针对kMDItemPath的搜索中没有导致Spotlight的结果

时间:2009-08-27 14:46:44

标签: objective-c cocoa osx-leopard spotlight

我正在尝试创建一个Spotlight查询,用于在文件路径中搜索字符串(我希望它在文件名中包含,或者包含任何文件夹的名称)。< / p>

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"kMDItemPath like[wcd] $SEARCH";
[query setPredicate: 
    [predicateTemplate predicateWithSubstitutionVariables:
        [NSDictionary dictionaryWithObject:searchingFor forKey:@"SEARCH"]
    ]
];
[query startQuery];

这总是返回0结果,即使是以下结果:

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"kMDItemDisplayName in[wcd] $SEARCH";

返回1个或多个结果。我在MacOS X 10.5.8上测试它。

1 个答案:

答案 0 :(得分:9)

说明文件:

  

<强> kMDItemPath

     

文件的完整路径。可以检索此属性的此值,但不能在查询中使用或对搜索结果进行排序。

Link

这意味着属性kMDItemPath只能与MDItem或NSMetadataItem一起使用,以检索已找到项目的路径。您不能在指定用于查找文件的查询谓词中将其与MDQuery或NSMetadataQuery一起使用。