iCloud通过NSMetadataQuery驱动列表目录和文件

时间:2015-08-07 04:19:19

标签: icloud nsmetadataquery icloud-drive

我已经构建了一个名为“rmc”的支持iCloud的应用程序。我的应用程序现在可以将文件上传到iCloud Drive并通过NSMetadataQuery获取元数据。但是NSMetadataQuery的结果只包含我APP的Container中的文件。请看这个链接:{{ 3}}, 这是一个文档,据说NSMetadataQuery可以在其他APP的容器中获取文件。我想要的是我可以获取iCloud Drive中的所有文件,就像应用程序“Document 5”和“Cloud Lite”一样,它们可以获得所有文件文件。 https://developer.apple.com/videos/wwdc/2015/?id=234

请看这张照片。它是APP“文档5”的UI。这个APP可以获取iCloud Drive的根目录信息。但我的应用程序只能获取“rmc”文件夹中的文件。我也想获取iCloud Drive中的所有目录和文件。就像“文档5”那样。我希望有人能帮助我理解我的问题,因为我的英语很倾心。谢谢!!! 这是我的代码:

    - (BOOL)getFiles
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil];

    self.query = [[NSMetadataQuery alloc]init];
    self.query.predicate = [NSPredicate predicateWithFormat:@"%K like '*'",NSMetadataItemFSNameKey]; // all
    self.query.searchScopes = [NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope,NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope,nil];
    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(getFilesFinished:)
     name:NSMetadataQueryDidFinishGatheringNotification
     object:nil];

    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(getFilesFinished:)
     name:NSMetadataQueryDidUpdateNotification
     object:nil];

    [self.query startQuery];
    return YES;
}

此方法使用NSMetadataQuery从iCloudDrive获取元数据。我设置了searchScopes = [NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope,NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope,nil];

这是Apple关于此值的文档: NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope 在应用程序容器外搜索文档。此搜索可以找到用户先前使用文档选择器视图控制器打开的iCloud文档。这使您的应用可以再次访问文档,而无需直接用户交互。结果的NSMetadataItemURLKey属性返回安全范围的NSURL。有关使用安全范围URL的更多信息,请参阅NSURL类参考中的安全范围URL。

0 个答案:

没有答案