FileManager не может найти файл UIDocumentBrowserViewController
Я создал новое "приложение на основе документов" в Xcode и пытаюсь использовать библиотеку Zip для выполнения некоторых операций: https://github.com/marmelroy/Zip
Под капотом Zip полагается на поиск файла через FileManager
, однако по какой-то странной причине я продолжаю получать ошибку "файл не найден". Я добавил этот код в свойDocumentBrowserViewController
, в котором говорится, что он не может найти только что выбранный файл.
// DocumentBrowserViewController.swift
func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentsAt documentURLs: [URL]) {
guard let sourceURL = documentURLs.first else { return }
let fileManager = FileManager.default
let exists = fileManager.fileExists(atPath: sourceURL.absoluteString)
print(exists) // false
}
Я также пробовал использовать API-интерфейсы ресурсов с областью безопасности следующим образом:
// DocumentBrowserViewController.swift
func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentsAt documentURLs: [URL]) {
guard let sourceURL = documentURLs.first else { return }
guard sourceURL.startAccessingSecurityScopedResource() else { return }
let fileManager = FileManager.default
let exists = fileManager.fileExists(atPath: sourceURL.absoluteString)
print(exists) // false
sourceURL.stopAccessingSecurityScopedResource()
}
А также используя NSFileCoordinator
:
func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentsAt documentURLs: [URL]) {
guard let sourceURL = documentURLs.first else { return }
guard sourceURL.startAccessingSecurityScopedResource() else { return }
var error: NSError? = nil
NSFileCoordinator().coordinate(readingItemAt: sourceURL, error: &error) { (url) in
let fileManager = FileManager.default
let exists = fileManager.fileExists(atPath: url.absoluteString)
print(exists)
}
sourceURL.stopAccessingSecurityScopedResource()
}
Может ли кто-нибудь объяснить мне, почему FileManger
сообщает, что этого файла не существует? Я напечатал нашsourceURL
и, похоже, это подходящее место.