загрузка изображений из firebase в uitableviewcell - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь создать 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()
}

}

В моем файле swift UITableViewCell я подключаю UIImage:

    @IBOutlet weak var posterProfilePic: UIImageView!

Чтобы загрузить изображение из firebase / cache, я вызываю метод cache:

    func getShoutoutPic() {
    if let profileImageUrl = shoutout?.picsImageUrl {
    self.posterProfilePic.loadImageUsingCacheWithUrlString(urlString: 
    profileImageUrl) }

    }

Любой совет будет с благодарностью! спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...