枚举 iCloud Drive 目录

Posted

技术标签:

【中文标题】枚举 iCloud Drive 目录【英文标题】:Enumerating an iCloud Drive directory 【发布时间】:2018-11-14 13:55:01 【问题描述】:

我想枚举用户在 UIDocumentPickerViewController 中选择的目录中的文件。

我得到了从文档选择器返回的目录 URL。 我调用 startAccessingSecurityScopedResource 我创建了一个 NSFileCoordinator 实例并开始协调读取目录。在我的读取处理程序中,我尝试使用 FileManager 获取目录的内容。

我看到目录中有一堆 blah.png.icloud 文件。这是有道理的,因为我在我的 iCloud 驱动器中选择一个目录。

枚举该目录内容的正确方法是什么?我需要列举两件事: 图像元数据 图像数据

我是否只需要触发所有 .icloud 文件的下载才能读取其图像元数据?

我觉得 NSMetaDataQuerys 是我最好的选择,但他们似乎不喜欢使用文档选择器提供给我的 URL 作为“查询范围”。 (查询开始,但从未更新或完成)

有人知道这方面的好资源吗?我看到很多关于使用 NSMetaDataQueries 读取无处不在的目录的内容,但没有看到用户通过文档选择器选择的目录位置。

奖金问题: 我是否需要启动“.icloud”文件的完整文件下载才能读取它们的图像元数据? (图像宽度和高度)

【问题讨论】:

【参考方案1】:

我能够使用 NSMetadataQuery 使其工作。

let url = ... // URL retrieved using UIDocumentPickerViewController
let query = NSMetadataQuery()
query.searchScopes = [NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope, url]
query.predicate = NSPredicate(format: "%K like '*'", NSMetadataItemFSNameKey)

【讨论】:

我可以确认以上工作完美!

以上是关于枚举 iCloud Drive 目录的主要内容,如果未能解决你的问题,请参考以下文章

markdown iCloud Drive和iCloud备份有什么区别?

是否需要为 iCloud Drive 更新 iOS 7 iCloud 应用程序?

获取 iCloud Drive 的内容

React Native App 中的 iCloud 和 Google Drive 集成

为 iOS 应用程序的文件启用 iCloud Drive 文件夹

如何备份和恢复 iCloud Drive 上的 .zip 文件?