在 fetchContents(..) 方法中,我通过 session.downloadTask 从服务器下载文件项。我将文件从响应 url 复制到临时 url(从 NSFileProviderManager.temporaryURL 创建)。在此之后,可以确定临时 url 的文件内容不是 0byte (与下载的文件长度相同)然后我用这个临时 url,文件提供程序项调用 completionHandler。但我无法在 finder 中打开文件并显示错误消息 - 无法打开,因为文件为空。(我以为是itemVersion问题,所以我临时更改了contentVersion,之后,当我重建应用程序时,它开始在finder中下载项目并成功下载文件。我什至可以打开文件。但是当我点击另一个文件打开它,我无法用味精打开它 - 文件是空的。)
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