Я использую UIDocumentPickerViewController
, чтобы пользователь мог выбрать папку для сохранения текстового файла. Все работает, за исключением возможности отобразить сообщение, подтверждающее местоположение сохраненного файла.
На снимке экрана показан типичный список папок, отображаемых UIDocumentPickerViewController
, которые пользователь может выбрать:
UIDocumentPickerViewController
Имена папок, отображаемые пользователю, соответствуют ожидаемым. Однако URL-адреса, возвращаемые UIDocumentPickerViewController
, отличаются от отображаемых и не подходят для использования в подтверждающем сообщении:
.../data/Library/Mobile Documents/com~apple~CloudDocs
.../data/Library/Mobile Documents/com~apple~CloudDocs/Desktop
.../data/Library/Mobile Documents/com~apple~CloudDocs/Documents
.../data/Library/Mobile Documents/3L68KQB4HG~com~readdle~CommonDocuments/Documents
.../data/Library/Mobile Documents/com~apple~CloudDocs/Downloads
.../data/Library/Mobile Documents/iCloud~net~jermware~gjLists/Documents
.../data/Library/Mobile Documents/iCloud~is~workflow~my~workflows/Documents
.../data/Containers/Shared/AppGroup/EB502BF4-9272-466F-9F5D-0CA97E35E687/File Provider Storage
В некоторых URL-адресах я мог бы использовать только последний компонент пути, например Рабочий стол , Документы , Загрузки , но для некоторых это второй компонент пути после последнего, например gjLists , а для других путь совершенно другой, например Documents by Readdle , Ярлыки и На моем iPhone.
Это делает очень трудным / невозможным надежный синтаксический анализ URL для извлечения папка, отображаемая пользователю UIDocumentPickerViewController
.
После некоторого расследования я обнаружил FileManager.default.displayName
API, который возвращает отображаемое имя файла или каталога по указанному пути.
Это улучшает несколько вещей, давая следующие имена папок для вышеуказанных URL-адресов:
iCloud Drive
iCloud Drive
iCloud Drive
Documents by Readdle
Downloads
gjLists
Shortcuts
File Provider Storage
Теперь у меня есть правильные имена для Documents by Readdle , Downloads , gjLists и Shortcu ts , но только iCloud Drive для Desktop и документов и еще «Хранилище поставщика файлов» для 'Вкл. Мой телефон '.
Кто-нибудь знает, как, учитывая URL-адреса, возвращаемые UIDocumentPickerViewController
, я могу получить имя папки, отображаемое в средстве выбора? Отображение подтверждающего сообщения пользователю о том, что файл был успешно сохранен в папке 'File Provider Storage' , а не 'On My iPhone' , не вызовет никакой путаницы. .