将图像从Firebase加载到uitableviewcell

时间:2019-06-30 18:12:48

标签: swift image firebase caching

我正在尝试创建一个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) }

    }

任何建议将不胜感激!谢谢

0 个答案:

没有答案