UIDocument, FileWrapper и сторонние поставщики файлов

Я использую пакеты документов в своем приложении (через FileWrapper API) и использую класс UIDocumentBrowserViewController для управления документами. Пакет документов в основном представляет собой иерархию (текстовых) файлов и папок. Все отлично работает, когда документы хранятся на устройстве или в iCloud. Но все иначе, когда я пытаюсь создать документ в удаленном месте, доступ к которому предоставляют сторонние поставщики файлов, такие как Google Drive, Microsoft One Drive или Dropbox. Каждый раз, когда я пытаюсь создать документ в любом из этих мест, мой вызов importHandler (fileURL,.move):

  1. Dropbox: происходит сбой с общим сообщением об ошибке: "Операция не может быть завершена. (DBFileProviderErrorDomain error 1.)";

  2. Диск Google: происходит сбой с немного другим сообщением: "Операция не может быть завершена (ошибка com.apple.DocumentManager 1.)"

  3. MS OneDrive: кажется успешным, но при попытке открыть вновь созданный документ приложению передается объект OS_dispatch_data вместо объекта FileWrapper, который он ожидает.

Я не уверен, что происходит. Единственное, о чем я могу думать, это то, что пакеты документов поддерживаются только в файловых системах Apple.

Любое предложение с благодарностью. Спасибо.

0 ответов

Насколько я могу судить (и подтверждая ваше подозрение), расширения поставщиков файлов для большинства поставщиков облачных хранилищ, не относящихся к iCloud (доступ к которым осуществляется через UIDocumentBrowserViewController) не очень хорошо обрабатывают пакеты. UIManagedDocument объекты, например, хранят свои хранилища данных в формате пакета, и мой опыт пытается создать / сохранить / переместить их в облачное хранилище, отличное от iCloud, с помощью UIDocumentBrowserViewControllerобычно заканчивались неудачей. См. Копию отчета об ошибке OpenRadar, которую я подал в Apple, http://openradar.appspot.com/6905951.

Другие вопросы по тегам