DocumentPickerViewController в режиме перемещения или экспорта отклонен с несуществующим URL-адресом (создание расширения приложения поставщика документов)

В настоящее время я пытаюсь реализовать функциональность для режимов перемещения и экспорта. Все, что я делаю, это заставляю пользователя перейти в каталог, в который он хочет переместить/экспортировать свой файл, а затем вызвать команду dismissGrantingAccessToURL в выбранном каталоге с добавлением имени файла исходного файла. Вот как это выглядит в коде:

let moveDestinationPath = self.currentDirectory.path.stringByAppendingPathComponent(AppHelper.Stored.originalURL!.lastPathComponent)
delegate.finishWithURL(NSURL.fileURLWithPath(moveDestinationPath))

Я подумал, что этого должно хватить, учитывая, что в документации сказано следующее:

Экспорт режима средства выбора документов. Укажите URL-адрес для выбранного места назначения. Этот URL-адрес должен быть доступен только расширению контроллера представления средства выбора документов. Система сохраняет копию документа по этому URL-адресу и возвращает URL-адрес хост-приложению, чтобы указать на успех. Хост-приложение не может получить доступ к документу по этому URL-адресу.

Переключить режим средства выбора документов. Укажите URL-адрес для выбранного места назначения. URL-адрес должен содержаться внутри иерархии, на которую ссылается ваше свойство documentStorageURL. Система переместит документ на этот URL-адрес и вернет URL-адрес хост-приложению. После этого хост-приложение сможет получить доступ к документу по новому URL-адресу.

Однако, когда я запускаю этот код, я получаю следующую ошибку:

Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '<TestDocumentProvider.DocumentPickerViewController: 0x7c470770> was 
dismissed with a nonexistent URL (file:///Users/test/Library/Developer/CoreSimulator
/Devices/6867B1A7-8694-4D6D-8480-69FE89F39C27/data/Containers/Shared/AppGroup/74A2FBED-
70C5-4F24-8345-AD35FEB86D01/FileProviderStorage/Directory1/apple1.png) 
in Move or Export mode'

Учитывая эту ошибку, кажется, что они хотят, чтобы я вручную переместил или скопировал файл по исходному URL-адресу поверх себя. Но это противоречит тому, что говорится в документации (часть о системе, которая это делает).

Итак, кто-нибудь знает, что Apple собирается сделать со мной в этой ситуации? На данный момент я, вероятно, просто пойду по пути перемещения/копирования самостоятельно...


person arcticmatt    schedule 29.08.2014    source источник


Ответы (1)


Я думаю, вы неправильно понимаете режим экспорта. Цель состоит в том, чтобы кто-то выбрал файл, к которому может получить доступ ваше расширение. Вы загружаете/предоставляете его и предоставляете FileURL запрашивающему приложению.

То, что вы действительно хотите сделать, это режим импорта.

person Kevin Griesbach    schedule 30.09.2014