首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSMetadataQuery搜索目录中的文件

使用NSMetadataQuery搜索目录中的文件
EN

Stack Overflow用户
提问于 2013-05-01 20:45:03
回答 1查看 1.3K关注 0票数 0

我的应用程序是使用UIDocument + iCloud创建和查看文档。这些文件以如下方式存储:

  • 文件/Filename.db
  • Documents/Filename.db/File.db (Filename.db是目录)

文档/Filename.db目录中的文件可以在自己的View中很好地加载。当在另一个视图控制器中打开Documents/Filename.db/File.db时,我在加载这些文件时遇到问题。文件名不是固定的,它们会多次出现。我可以验证这些文件是否存储在目录中,这样就不会有问题了。

我想我已经找到了NSMetadataQuery的问题,因为它只是在文档中搜索/-,我希望它在目录Documents/Filename.db中搜索。我已经尝试将查询serachScope设置为正确的路径,但似乎需要使用serachScope进行搜索才能返回结果。

代码语言:javascript
复制
- (NSMetadataQuery *)documentQuery 
{
NSMetadataQuery *query = [[NSMetadataQuery alloc] init];

NSString *appending = [NSString stringWithFormat:@"Documents/%@.db/", currentDirectory]; // Directory name
NSURL *documentPath = [[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] URLByAppendingPathComponent:appending];
NSLog(@"Document Path: %@", documentPath);

if (query) {

    [query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]];

    NSString *filePattern = [NSString stringWithFormat:@"*.%@", STACK_EXTENSION];
    [query setPredicate:[NSPredicate predicateWithFormat:@"%K LIKE %@", NSMetadataItemFSNameKey, filePattern]];

}

return query;

}

- (void)processiCloudFiles:(NSNotification *)notification
{
[_query disableUpdates];
[_iCloudURLs removeAllObjects];

NSArray *queryResults = [_query results];
for (NSMetadataItem *result in queryResults) {

    NSURL *fileURL = [result valueForAttribute:NSMetadataItemURLKey];

    NSLog(@"---- FileURL: %@", fileURL);

    NSNumber *aBool = nil;

    [fileURL getResourceValue:&aBool forKey:NSURLIsHiddenKey error:nil];
    if (aBool && ![aBool boolValue]) {
        NSLog(@"Adding following Stack: %@", fileURL);
        [_iCloudURLs addObject:fileURL];

    }

}

NSLog(@"Found %d iCloud files", _iCloudURLs.count);
NSLog(@"iCloud URLs: %@", _iCloudURLs);

...

}
EN

回答 1

Stack Overflow用户

发布于 2013-05-02 01:02:31

我不知道为什么你的目录有一个.db扩展,我可能不明白你的问题的全部含义,但当我问到如何在iCloud存储的无处不在容器中使用子目录时,有人告诉我,可以添加子目录,但“不应该添加子目录。以它们的名字或者它们可能会被当作一个包对待,这对你来说是可悲的。你也不应该把任何.nosync条目放在容器的最顶层。”他还说,"Settings将显示文档为一个扁平的高度清晰(例如,它只显示文件和包,而不是目录),其他UI区域也可能在视觉上忽略子目录。“

为了从主目录表中选择子目录中的文件明细表,我求助于一种方法,用于遍历查询中的所有项,并仅查找URL中有子目录的项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16326196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档