3

我已经构建了一个名为“rmc”的启用 iCloud 的应用程序。我的应用程序现在可以将文件上传到 iCloud Drive 并通过 NSMetadataQuery 获取元数据。但是 NSMetadataQuery 的结果仅包括我的 APP 容器中的文件。请参阅此链接:https://developer .apple.com/videos/wwdc/2015/?id=234,这是一个文件,据说NSMetadataQuery可以获取其他APP容器中的文件。我想要的是我可以获取iCloud Drive中的所有文件,就像应用程序“文档5”和“云精简版”,他们可以获取所有文件。 在此处输入图像描述

请看这张图。是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。

4

0 回答 0