UIDocument, FileWrapper и сторонние поставщики файлов - PullRequest
0 голосов
/ 04 декабря 2018

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

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

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

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

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

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

1 Ответ

0 голосов
/ 07 августа 2019

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

...