#swift #macos #fileprovider
Вопрос:
В методе fetchContents(..) я загружаю файловый элемент с сервера по сеансу.Задача загрузки. И я копирую файл с URL-адреса ответа на временный URL-адрес (который создается из NSFileProviderManager.temporaryURL). После этого убедитесь, что содержимое файла временного URL-адреса не равно 0 байтам (такой же длины, как и загруженный файл). А затем я вызываю completionHandler с этим временным URL-адресом, элементом поставщика файлов. Но я не могу открыть файл в finder с ошибкой msg — не удается открыть, потому что файл пуст. (Я думал, что это связано с проблемой преобразования элементов, поэтому я временно изменил версию содержимого, и после этого, когда я перестраиваю приложение, оно начинает загружать элемент в finder и успешно загружает файл. И я даже могу открыть файл. Но когда я нажимаю на другой файл, чтобы открыть его, я не могу открыть его с помощью msg — файл пуст.)
let task = downloadItem(named: filename) { url, error in let dataURL = makeTemporaryURL() do { try FileManager.default.copyItem(at: url, to: dataURL) completionHandler(dataURL, item, nil) } catch let error as NSError { completionHandler(nil, nil, Error.fileDownloadFailed) } } task.progress.cancellationHandler = { completionHandler(nil, nil, NSError(domain: NSCocoaErrorDomain, code: NSUserCancelledError)) } return task.progress
Комментарии:
1. Откуда взялся парень по имени » downloadItem(по имени:)»?
2. Он просто загружает файл с сервера. Загруженный файл сохраняется во временном URL-адресе, поэтому я копирую его по другому пути и возвращаю этот путь обработчику завершения.
3. Я просто не могу этого понять — 1) Когда я нажимаю файл, он начинает загружаться, и после этого процесса я не могу открыть файл, потому что файл пуст. 2) Когда я временно изменяю версию содержимого элемента в своем коде, файл начинает загружаться без нажатия кнопки файл, и все идет хорошо, и я могу открыть загруженный файл.