swift - Swift:当应用程序处于前台和后台时,将图像临时存储在本地
问题描述
我试图在用户运行应用程序时在本地存储图像,并在应用程序处于后台时将图像保存在本地。当用户终止应用程序时,数据应该会在本地消失,并且只有在用户重新打开应用程序时才会加载。我最初知道如何加载图像,但我正在考虑在哪里/如何在本地存储图像。
我知道 Swift 有文件系统,但我想知道这是否是这种实现的最佳实践,或者是否有更好的解决方案。
解决方案
完全按照您的意愿去做是不可能的,但您可以在功能上做类似的事情。
要缓存图像,您可以简单地使用现有的库,例如SDWebImage。它为您管理异步图像下载和缓存,并清除缓存的图像,您可以轻松完成
SDImageCache.sharedImageCache().clearMemory()
SDImageCache.sharedImageCache().clearDisk()
现在,至于何时要清除缓存,这有点棘手。
终止应用程序时无法清除缓存,因为无法可靠地检测应用程序何时终止。有UIApplicationDelegate.applicationWillTerminate
方法,但如果应用程序在挂起状态下终止,则不会调用它。
但是您可以采取一种解决方法:只需在启动应用程序时清除缓存UIApplicationDelegate.application(_:didFinishLaunchingWithOptions:)
,这在功能上等同于您想要执行的操作。
推荐阅读
- python - 是否可以使用字典运行 python 函数?
- javascript - 无法使用 Node.js 验证用户令牌
- python - 如果下一列不在上一列中,则python连接多列
- python - 如何克隆一个python虚拟环境
- php - 发布数据时出现奇怪的编码问题
- vue.js - VueJS:多个数组,在任何一个数组中选择时删除其他数组中的值
- python - 如何使我的代码在最后输出一个格式化的值,并将其放在一个函数中,并带有一个返回值?
- python - 我的网页抓取代码不会让我的 streamlit 应用程序停止运行
- database - 我想与同事分享我的 docker mongodb 数据库
- google-sheets - Google 表格在地址公式中显示错误的结果。如何进行多部分查询,结果来自同一行的另一列