在我的应用程序中,我在浏览tableView
时缓存用户的图像以使用更少的数据。我正在加载配置文件图片时缓存它们,但是,当我更改当前用户的配置文件图片时,当前用户创建的帖子上的缓存图像不会更改。
工作方式如下:
tableView
tableView
时,我会将其缓存tableView
上显示的图像与上一个图像相同,而不是新图像所以我们回到我的问题,如果用户个人资料图片发生变化,我怎样才能替换缓存的图片?
这是我的缓存扩展,如果它对任何事情都有帮助:
import UIKit
import Firebase
import FirebaseStorage
let imageCache = NSCache<AnyObject, AnyObject>()
var databaseRef: FIRDatabaseReference! {
return FIRDatabase.database().reference()
}
var storageRef: FIRStorage! {
return FIRStorage.storage()
}
extension UIImageView{
func loadProfilePictureWithCash(postUser: String){
let userRef = databaseRef.child("users/\(postUser)")
userRef.observe(.value, with: { (snapshot) in
let user = User(snapshot: snapshot)
let imageURL = user.photoURL!
// check cache for image first
if let cachedImage = imageCache.object(forKey: imageURL as AnyObject){
self.image = cachedImage as? UIImage
return
}
else{
storageRef.reference(forURL: imageURL).data(withMaxSize: 1 * 1024 * 1024, completion: { (imageData, error) in
if error == nil {
DispatchQueue.main.async {
if let data = imageData{
if let downloadedImage = UIImage(data: data) {
imageCache.setObject(downloadedImage, forKey: imageURL as AnyObject)
self.image = downloadedImage
}
}
}
}
else{
print(error?.localizedDescription as Any)
}
})
}
}) { (error) in
print(error.localizedDescription)
}
}
}