После анализа JSON я получил свои данные в arraOfData ViewController, но collectionView не отображает это. Если я использую статический массив, все работает.
collectionview.reloadData () не работает. На мой взгляд, нужно как-то ждать данные от разбора, потом попробовать загрузить collectionView. Я пытался использовать refresherControler для ожидания данных, но я не знаю, куда положить метод "endRefreshing" (я думаю, startRefreshing нужно в ViewDidLoad)
Если я использую reloadData, как didSet в arraOfData
Я получил ошибку, потому что collectionView - ноль. Использовать reloadData сразу после получения данных из парсинга у меня тоже не получилось
И большая просьба рассказать пару ресурсов (статей) по этой теме, я чувствую, что у меня большие проблемы с отображением данных и в какой последовательности функции начинают загружаться. Большое спасибо.
class ViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
var arraOfData = [GettingMoney]() {
didSet {
print("Changes: \(arraOfData.count)")
}
}
// let arr = ["1", "2", "3"] - test, if i use this array, collectionView display data
override func viewDidLoad() {
super.viewDidLoad()
GettingMoney.fetchData()
collectionView.dataSource = self
collectionView.delegate = self
}
}
extension ViewController: UICollectionViewDelegate,
UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return arraOfData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCellId", for: indexPath) as? CollectionViewCell
cell?.currentCurrency.text = "\(arraOfData[indexPath.row])"
return cell!
}
}