Параллелизм / Многопоточность Swift - PullRequest
0 голосов
/ 24 апреля 2020

У меня проблема с сохранением данных и их отображением на collectionView. Данные не сохранены в неправильном порядке. Я думаю, что это связано с параллелизмом при загрузке новых данных в ячейки collectionView, но я не могу понять, как это исправить.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoCell", for: indexPath) as! PhotoCollectionViewCell

    cell.activityIndicator.startAnimating()

    if let data = storeImageData[indexPath.item].image {
        cell.activityIndicator.stopAnimating()
        cell.imageView.image = UIImage(data: data)
    }
    else {
        if let urlString = storeImageData[indexPath.item].url {

            FlickrClient.loadImagesFromURLS(imageURLString: urlString) { (photoData, error) in
                if error != nil {
                    print(error!)
                    return
                }
                guard let photoData = photoData else { return }
                self.storeImageData[indexPath.item].image = photoData
                cell.activityIndicator.stopAnimating()
                cell.imageView.image = UIImage(data: photoData)
                try? self.dataController.viewContext.save()
           }

        }
    }
    return cell
}

storeImageData - это массив объектов, которые я сохраняю и загружаю в CoreData. По некоторым причинам данные не сохранены в правильном порядке. Очевидно url и image данные не совпадают после сохранения.

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