У меня проблема с сохранением данных и их отображением на 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 данные не совпадают после сохранения.