【发布时间】:2017-08-21 11:03:04
【问题描述】:
我在使用 twitter/instagram 之类的新闻提要时遇到问题……
当从 Firebase 存储中提取图像时,图像不会加载,直到我通过滚动与 tableView 交互...我滚动得越多,我可以出现的越多。它有时还会随机显示错误的帖子图像,直到我再滚动一些,最终所有图像都加载完毕,它们都在正确的位置。
这没有任何意义……我所有的逻辑都是正确的,我在从数据库加载图像 url 时使用了 cachedImages。我看过很多视频教程,它们都使用了与我类似的方法,但它们都没有像我这样的错误问题。
对可能出现的问题有什么想法吗?
代码:
var imageCache = [String: UIImage]()
var lastURLUsedToLoadImage: String?
// loading user image from urls
extension UIImageView {
func loadImage(urlString: String) {
lastURLUsedToLoadImage = urlString
if let cachedImage = imageCache[urlString] {
self.image = cachedImage
return
}
guard let url = URL(string: urlString) else { return }
URLSession.shared.dataTask(with: url) { (data, response, err) in
if let err = err {
print("Failed to fetch post image:", err)
return
}
if url.absoluteString != lastURLUsedToLoadImage {
return
}
guard let imageData = data else { return }
let photoImage = UIImage(data: imageData)
imageCache[url.absoluteString] = photoImage
DispatchQueue.main.async {
self.image = photoImage
}
}.resume()
}
}
【问题讨论】: