Swift: 应用在前台和后台时临时将图像存储在本地

Swift: temporarily storing image locally while app is in foreground and background

我正在尝试在用户使用 运行 应用程序时在本地存储图像,并在应用程序处于后台时将图像存储在本地。当用户终止应用程序时,数据应该在本地消失,只有在用户重新打开应用程序时才会加载。我知道最初如何加载图像,但我正在考虑 where/how 将图像存储在本地。

我知道 Swift 有文件系统,但我想知道这是否是这种实现的最佳实践,或者是否有更好的解决方案。

完全按照您的意愿行事是不可能的,但您可以在功能上做类似的事情。

要缓存图像,您可以简单地使用现有的库,例如 SDWebImage。它为您管理异步图像下载和缓存,要清除缓存的图像,您可以简单地做

SDImageCache.sharedImageCache().clearMemory()
SDImageCache.sharedImageCache().clearDisk()

现在,至于您想清除缓存时,这有点棘手。

您无法在终止应用程序时清除缓存,因为无法可靠地检测到应用程序何时终止。有 UIApplicationDelegate.applicationWillTerminate 方法,但如果应用程序在暂停状态下终止,则不会调用该方法。

但您可以采取一种解决方法:只需在 UIApplicationDelegate.application(_:didFinishLaunchingWithOptions:) 中启动应用程序时清除缓存,这在功能上等同于您想要执行的操作。