我正在尝试创建一个UITableView,它将从firebase加载帖子和图片。帖子加载正常,但是图像,只有最底部的单元格显示图像,而其他单元格仅在执行tableView.reloadData()之后加载图像。我想在用户打开UITableView时将所有图像正确加载到每个单元格中。
我也在使用缓存方法,因此用户只需要下载一次图像。如果您有任何想法请告诉我!
这是我一直在尝试的缓存方法:
let imageCache = NSCache<AnyObject, AnyObject>()
var imageUrlString: String?
extension UIImageView {
func loadImageUsingCacheWithUrlString(urlString: String) {
imageUrlString = urlString
let url = NSURL(string: urlString)
image = UIImage(named: "addpic")
if let imageFromCache = imageCache.object(forKey: urlString as
AnyObject) as? UIImage {
self.image = imageFromCache
return
}
URLSession.shared.dataTask(with: url! as URL, completionHandler: {
(data, respones, error) in
if error != nil {
print(error)
return
}
DispatchQueue.main.async(execute: {
let imageToCache = UIImage(data: data!)
if imageUrlString == urlString {
self.image = imageToCache
}
imageCache.setObject(imageToCache!, forKey: urlString as
AnyObject)
tableView.reloadData()
})
}).resume()
}
}
在我的UITableViewCell快速文件中,我连接了UIImage:
@IBOutlet weak var posterProfilePic: UIImageView!
为了从firebase / cache加载图像,我调用了cache方法:
func getShoutoutPic() {
if let profileImageUrl = shoutout?.picsImageUrl {
self.posterProfilePic.loadImageUsingCacheWithUrlString(urlString:
profileImageUrl) }
}
任何建议将不胜感激!谢谢