Я думаю, что print(images)
срабатывает до завершения блока, поэтому он все еще пуст. Вы можете протестировать печать в журналах в блоке convertAssetsToImages()
, чтобы увидеть, что и когда срабатывает. Возможное решение - удалить массив UIImage, чтобы иметь один массив (проще управлять), и преобразовать актив в UIImage в collectionView cellForRow
Код будет выглядеть так:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionViewCell
// Get asset at indexPath
let asset = assets[indexPath.item]
asset.fetchOriginalImage(completeBlock: {(image, info) in
if let image = image {
cell.previewImage.image = image
}
})
return cell
}
И не забудьте вызвать collectionView.reloadData()
в viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
collectionView.dataSource = self
collectionView.delegate = self
collectionView.reloadData()
print(assets)
}
Вы можете удалить массив UIImage и все, что на него ссылается
Надеюсь, это поможет - дайте мне знать, если это не работает, я запущу код и помогу найти решение