Не удается извлечь элемент в NSFileProvider (macOS)

#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) Когда я временно изменяю версию содержимого элемента в своем коде, файл начинает загружаться без нажатия кнопки файл, и все идет хорошо, и я могу открыть загруженный файл.