Мое приложение требует загрузки и показа файлов в формате 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,но я не уверен.
Спасибо!