UIDocument、FileWrapper 和第三方文件提供程序
Posted
技术标签:
【中文标题】UIDocument、FileWrapper 和第三方文件提供程序【英文标题】:UIDocument, FileWrapper & Third-Party File Providers 【发布时间】:2018-12-04 17:10:53 【问题描述】:我在我的应用程序中使用文档包(通过 FileWrapper API),并且我正在使用 UIDocumentBrowserViewController 类进行文档管理。文档包基本上代表(文本)文件和文件夹的层次结构。当文档存储在设备或 iCloud 中时,一切正常。但是,当我尝试在远程位置创建文档时,情况就不同了,访问权限由第三方文件提供商提供,例如 Google Drive、Microsoft One Drive 或 Dropbox。每次我尝试在任何这些位置创建文档时,我都会调用 importHandler(fileURL, .move):
Dropbox:失败并出现一般错误消息:“操作无法 完成。 (DBFileProviderErrorDomain 错误 1.)";
Google Drive:失败并显示略有不同的消息:“The 操作无法完成。 (com.apple.DocumentManager 错误 1.)"
MS OneDrive:似乎成功,但在尝试打开新的 创建的文档应用程序被交给了一个 OS_dispatch_data 对象 一个 FileWrapper 对象,这是它所期望的。
我不确定发生了什么。我唯一能想到的是文档包仅在 Apple 文件系统上受支持。
非常感谢任何建议。 谢谢。
【问题讨论】:
【参考方案1】:据我所知(并确认您的怀疑),大多数非 iCloud 云存储提供商(通过UIDocumentBrowserViewController
访问)的文件提供商扩展不能很好地处理包。例如,UIManagedDocument
对象以包格式存储其数据存储,而我尝试使用UIDocumentBrowserViewController
创建/保存/移动它们到非 iCloud 云存储的经验通常以失败告终。请参阅我向 Apple 提交的错误报告的 OpenRadar 副本,http://openradar.appspot.com/6905951。
【讨论】:
以上是关于UIDocument、FileWrapper 和第三方文件提供程序的主要内容,如果未能解决你的问题,请参考以下文章
处理包含多个图像的 UIDocument 中的图像加载/存储