Ошибка 257 при открытии файла, нажав его в приложении "Файлы". Доступ к тому же файлу через файловый браузер работает (Swift 5 - Xcode12)

Когда я нажимаю файл, поддерживаемый моим приложением, в файловом менеджере iOS, мои приложения делегируют метод

private func open(url: URL, options: [UIApplication.OpenURLOptionsKey : Any]?)->Bool

вызывается, где я читаю файл

do {
        try fileData = Data(contentsOf: url)
}
catch { 
        print(error.localizedDescription)
}

что дает ошибку 257 (не авторизовано). При доступе к тому же файлу с помощью средства выбора документов:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt URL: URL) {
 if controller.documentPickerMode == UIDocumentPickerMode.import {
    var fileData : Data
    do {
         try fileData = Data(contentsOf: URL)
    }
    catch {
          print(error.localizedDescription)
    }
}

все работает нормально. Я получаю объект данных, который могу использовать. Я заметил одну вещь: метод AppDelegate получает URL-адрес в виде

/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Downloads/filename

в то время как обратный вызов documentPicker получает

/private/var/mobile/Containers/Data/Application/7A30D4D7-BD7D-4051-B3DE-143E18F48B23/tmp/myAppIndentifier-Inbox/filename

Добавление - как предлагается здесь -

let result  = url.startAccessingSecurityScopedResource()

не имело значения. Мои Поддерживает открытие документов на месте, для ключа plist установлено значение ИСТИНА. Есть идеи?


person Limmelambok    schedule 17.09.2020    source источник