【问题标题】:Swift: temporarily storing image locally while app is in foreground and backgroundSwift:当应用程序处于前台和后台时,将图像临时存储在本地
【发布时间】:2020-11-27 07:38:31
【问题描述】:
我试图在用户运行应用程序时将图像存储在本地,并在应用程序在后台运行时将图像保存在本地。当用户终止应用程序时,数据应该在本地消失,并且只有在用户重新打开应用程序时才会加载。我最初知道如何加载图像,但我正在考虑在哪里/如何在本地存储图像。
我知道 Swift 有文件系统,但我想知道这是否是这种实现的最佳实践,或者是否有更好的解决方案。
【问题讨论】:
标签:
swift
image
background
local-storage
foreground
【解决方案1】:
完全按照你的意愿去做是不可能的,但你可以在功能上做一些类似的事情。
要缓存图像,您可以简单地使用现有库,例如 SDWebImage。它为您管理异步图像下载和缓存,并且您可以轻松清除缓存的图像
SDImageCache.sharedImageCache().clearMemory()
SDImageCache.sharedImageCache().clearDisk()
现在,至于何时要清除缓存,就有点棘手了。
终止应用程序时无法清除缓存,因为无法可靠地检测应用程序何时终止。有UIApplicationDelegate.applicationWillTerminate方法,但如果应用程序在挂起状态下终止,则不会调用它。
但您可以采取一种解决方法:只需在UIApplicationDelegate.application(_:didFinishLaunchingWithOptions:) 中启动应用程序时清除缓存,这在功能上等同于您想要执行的操作。