首次加载时,NSCache不适用于所有图像

首次加载时,NSCache不适用于所有图像,第1张

首次加载时,NSCache不适用于所有图像

在这里下载图像并将其存储在缓存中就可以了。问题在于更新tableview单元格。

当表格视图将单元格加载到表格上时,图像尚未下载。但是,一旦下载了图像,我们就必须有选择地更新单元格,以便立即显示图像。

由于正在滚动,因此表视图再次调用“ cellForRowatIndexpath”,这将更新滚动时显示已下载图像的单元格。

如果您仍然希望使用扩展名,建议您添加tableView和indexpath作为参数,以便我们可以调用重新加载特定行并立即更新视图。

我已经更新了表重载代码和扩展中定义的函数的结构。让我知道事情的后续。

let imageCache = NSCache<AnyObject, AnyObject>()var imageURLString : String?extension UIImageView {public func imageFromServerURL(urlString: String, tableView : UITableView, indexpath : IndexPath)) {    imageURLString = urlString    if let url = URL(string: urlString) {        image = nil        if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage { self.image = imageFromCache return        }        URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in if error != nil{     print(error as Any)     return } DispatchQueue.main.async(execute: {     if let imgaeToCache = UIImage(data: data!){         if imageURLString == urlString {  self.image = imgaeToCache         }         imageCache.setObject(imgaeToCache, forKey: urlString as AnyObject)// calls when scrolling    tableView.reloadRows(at: [indexpath], with: .automatic)     } })        }) .resume()    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存