UIDocument,FileWrapper和第三方文件提供者

时间:2018-12-04 17:10:53

标签: ios swift nsfilewrapper uidocumentbrowservc fileprovider-extension

我在应用程序中使用文档包(通过FileWrapper API),并且使用UIDocumentBrowserViewController类进行文档管理。该文档包基本上表示(文本)文件和文件夹的层次结构。当文档存储在设备或iCloud上时,一切工作正常。但是,当我尝试在远程位置创建文档时,情况有所不同,该位置是由第三方文件提供程序(例如Google Drive,Microsoft One Drive或Dropbox)提供的。每次尝试在上述任何位置创建文档时,我都会调用importHandler(fileURL,.move):

  1. Dropbox:失败,并显示一般错误消息:“该操作无法 完成。 (DBFileProviderErrorDomain错误1。)“;

  2. Google云端硬盘:失败,并显示一条稍有不同的消息:“     操作无法完成。 (com.apple.DocumentManager错误     1。)“

  3. MS OneDrive:似乎成功,但是在尝试打开新的     创建的文档将应用程序交给OS_dispatch_data对象     期望的FileWrapper对象。

我不确定发生了什么。我唯一能想到的是文档包仅在Apple文件系统上受支持。

任何建议都将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:1)

据我所知(并确认您的怀疑),大多数非iCloud云存储提供商(通过UIDocumentBrowserViewController访问)的文件提供商扩展不能很好地处理软件包。例如,UIManagedDocument个对象以包格式存储其数据存储,而我尝试使用UIDocumentBrowserViewController将它们创建/保存/移动到非iCloud云存储的经验通常以失败告终。请参阅我向Apple提交的错误报告的OpenRadar副本http://openradar.appspot.com/6905951