UIDocument, FileWrapper и сторонние поставщики файлов
Я использую пакеты документов в своем приложении (через FileWrapper API) и использую класс UIDocumentBrowserViewController для управления документами. Пакет документов в основном представляет собой иерархию (текстовых) файлов и папок. Все отлично работает, когда документы хранятся на устройстве или в iCloud. Но все иначе, когда я пытаюсь создать документ в удаленном месте, доступ к которому предоставляют сторонние поставщики файлов, такие как Google Drive, Microsoft One Drive или Dropbox. Каждый раз, когда я пытаюсь создать документ в любом из этих мест, мой вызов importHandler (fileURL,.move):
Dropbox: происходит сбой с общим сообщением об ошибке: "Операция не может быть завершена. (DBFileProviderErrorDomain error 1.)";
Диск Google: происходит сбой с немного другим сообщением: "Операция не может быть завершена (ошибка com.apple.DocumentManager 1.)"
MS OneDrive: кажется успешным, но при попытке открыть вновь созданный документ приложению передается объект OS_dispatch_data вместо объекта FileWrapper, который он ожидает.
Я не уверен, что происходит. Единственное, о чем я могу думать, это то, что пакеты документов поддерживаются только в файловых системах Apple.
Любое предложение с благодарностью. Спасибо.
0 ответов
Насколько я могу судить (и подтверждая ваше подозрение), расширения поставщиков файлов для большинства поставщиков облачных хранилищ, не относящихся к iCloud (доступ к которым осуществляется через UIDocumentBrowserViewController
) не очень хорошо обрабатывают пакеты. UIManagedDocument
объекты, например, хранят свои хранилища данных в формате пакета, и мой опыт пытается создать / сохранить / переместить их в облачное хранилище, отличное от iCloud, с помощью UIDocumentBrowserViewController
обычно заканчивались неудачей. См. Копию отчета об ошибке OpenRadar, которую я подал в Apple, http://openradar.appspot.com/6905951.