Вообще твой вариант должен работать. Когда ты вызываешь `cartCV.reloadData()`, collection view перерисовывается.
Во-первых, задал ли ты data source и delegate для collection view? В коде этого нет, но может ты сделал это в сториборде. В коде это выглядело бы так:
override func viewDidLoad() {
super.viewDidLoad()
cartCV.dataSource = self
cartCV.delegate = self
dataProcessing()
print(imageArr.count)
}
Во-вторых, `cell.cartImageView.image = UIImage(data: try! Data(contentsOf: imageUrl!))` - очень плохо. Это будет выполняться в главном потоке, соответственно, приложение будет заморожено на момент загрузки картинок. Нужно делать это асинхронно. Желательно избегать force unwrapping. Например, так:
DispatchQueue.global().async {
if let imageUrl = imageUrl,
let data = try? Data(contentsOf: imageUrl) {
DispatchQueue.main.async {
self.cell.cartImageView.image = UIImage(data: data)
}
}
}
Такое решение костыльное, но я просто как пример пишу. Подгрузка data должна быть не в главном потоке, а обновление изображения в главном.
Также есть хорошая либа для асинхронной подгрузки картинок -
Kingfisher. C ней подгрузка изображения выглядела бы так:
cell.cartImageView.kf.setImage(with: imageUrl)