0

在 Objective-C 中,我设置NSMetaDataQuery并设置setSearchScope:查询以搜索特定用户的 Documents 文件夹。搜索有效,但不会沿目录树递归,仅在 Documents 文件夹中搜索。
我试过通配符,但没有乐趣。

这基本上是我尝试过的,除了不在 Documents 目录下搜索之外,它可以工作:

query = [[NSMetadataQuery alloc] init];
[query setSearchScopes:[NSArray arrayWithObjects:@"/Users/username/Documents/",nil]];
[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate >= '$time.this_week')"]];
[query startQuery];
4

2 回答 2

1

我认为问题出在您的 NSPredicate 格式字符串上。(我一直想写这个!)本质上,你$time.this_week会在 Spotlight 查询中工作得很好,但不能作为 NSPredicate 字符串。您必须实际创建一个 NSDate 对象并将其传递给查询字符串,例如

[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate <= %@)", [NSDate date]]];

以下是相关链接供您参考:

NSPredicate 和 Spotlight 查询字符串的比较
Spotlight 查询表达式语法
谓词格式字符串语法

于 2010-11-11T03:08:04.440 回答
0

我认为您的问题可能是/Users/username/Documents/. 在 Objective-C 中处理路径时,框架从不使用尾部斜杠。取下来有用吗?

于 2010-11-10T18:21:46.407 回答