【发布时间】:2019-03-23 05:32:00
【问题描述】:
我的应用需要下载并显示 QLPreviewController 中的文件。在某些情况下,这些文件必须是临时的,即用户完成 QLPreviewController 后,应该从内部存储中删除文件。
我试图调用一个完成块来删除这些文件,如下代码所示:
func launchPreview(QLpreviewItem: QLPreviewItem, completion: @escaping () -> Void) {
previewItem = QLpreviewItem
let previewController = QLPreviewController()
previewController.dataSource = self
self.present(previewController, animated: true, completion: {
completion()
})
}
完成块看起来像这样,它工作正常:
if fileManager.fileExists(atPath: path) {
try! fileManager.removeItem(atPath: path)
}
这种方法的问题是当用户尝试在 previewController 上共享文件时...它在预览控制器上显示后被删除,因此不可用。
previewController 关闭后有什么方法可以执行代码吗?
或者,如何将文件存储在临时目录中?在 iOS 上可以吗?
我正在使用以下代码下载并保存我的文件:
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] //path
let fileURL = documentsURL.appendingPathComponent(attachment.name) //url
return (fileURL, [.createIntermediateDirectories])
}
Alamofire.download(RestHelper.apiV1 + "/attachments/\(attachment.id)", to: destination).response { response in
//Some code here
}
也许将目标更改为 tmp 目录更简单,但我不确定。
谢谢!
【问题讨论】: