如何监视本地文档目录NSMetaDataQuery

n.e*_*ind 5 iphone cocoa-touch objective-c ios

使用iCloud,我设置了一个MetaDataQuery,如下所示:

[query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];
Run Code Online (Sandbox Code Playgroud)

如何为我的普通本地文档目录设置相同的MetaDataQuery?

下面的代码将为我提供我目录中的静态文件列表 - 但我正在寻找一种更加动态的方式,以便我可以使用NSMetadataQueryDidUpdateNotification.

这是我在我的documentsDirectory中查找文件的静态代码:

NSArray* localDocuments = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:
                           [self documentsDirectory] error:nil];

NSArray *onlyPQs = [localDocuments filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.pq'"]];

NSLog(@"local file count: %i", [onlyPQs count]);

for (int i=0; i < [onlyPQs count]; i++) {
    NSLog(@"LOCAL:%@", [onlyPQs objectAtIndex:i]);
}
Run Code Online (Sandbox Code Playgroud)

小智 6

我一直在寻找这个问题的答案,根据文档(搜索iCloud和桌面),它是不可能的:

与桌面不同,iOS应用程序的沙箱无法使用元数据类进行搜索.为了搜索应用程序的沙箱,您需要使用NSFileManager类以递归方式遍历沙箱文件系统中的文件.

在Mac OS X三个额外的范围定义为:NSMetadataQueryUserHomeScope,NSMetadataQueryLocalComputerScope以及NSMetadataQueryNetworkScope可用于实现这一目标.