Загрузка изображений в TableViewController - PullRequest
0 голосов
/ 11 октября 2019

Я загружаю изображения из RESTApi в Netflix, такой как ScrollView.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ccell", for: indexPath) as! CollectionCell
    cell.imageView.image = nil
    cell.labelText.text = self.data[indexPath.row].kategorie
    cell.model = self.data[indexPath.row].model!
    cell.progressHud.startAnimating()
    let url = self.data[indexPath.row].thumbnail_image_name

    if let imageFromCache = imageCache.object(forKey: url as AnyObject) as? UIImage{
        cell.imageView.image = imageFromCache
    }else{
    Download.fetchPhoto(id: 1, url: self.data[indexPath.row].thumbnail_image_name) { (image) in
        DispatchQueue.main.async {
            cell.imageView.image = image
            cell.progressHud.stopAnimating()
        }
        self.imageCache.setObject(image, forKey:url as AnyObject)
        }
    }
    return cell
}

Я кэширую изображения в ImageCache. Все идет нормально. Проблема в том, что каждый раз, когда я открываю TableviewController, задача загрузки начинается заново. Какова была бы лучшая практика для сохранения изображений после их загрузки, даже после закрытия существующего vc.

Сохранить их на устройстве? при отклонении отправляете кеш обратно представившему vc?

Может быть, у вас есть идеи.

Спасибо!

1 Ответ

0 голосов
/ 11 октября 2019

Поскольку ваш метод загрузки вызывается в cellForRow, он будет извлекаться каждый раз, когда будет снята новая очередь.

Я бы предложил выполнить загрузку в viewDidLoad() и сохранить загруженные изображения в массив, на который может ссылаться ваша ячейка. Когда загрузка будет завершена, вы можете указать представлению вашей коллекции перезагрузить данные.

Если вы не хотите загружать изображения каждый раз, когда вы видите экран, вам нужно будет сохранить загруженные данные изображений, а затем вы можете получить доступ к ним вместо вызова загрузки в viewDidLoad().

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