Я получаю данные с Firebase и хочу хранить их в массиве структур (
PostData), чтобы через него заполнять ячейки CollectionViewCell внутри TableViewCell. Проблема в том, что данные я получаю, в какой-то момент даже удается их подсчитать, а чтобы просто хранить ее в массиве и использовать между классами - без шансов :( Вот код таблицы, куда хочу принимать данные
(Social.swift):
var dataPosts = [PostData]()
override func viewDidLoad() {
super.viewDidLoad()
tableView = UITableView(frame: self.view.bounds, style: .grouped)
tableView.delegate = self
tableView.dataSource = self
...
self.parsePosts() { tempData in
self.dataPosts = tempData
self.tableView.reloadData()
}
}
...
func parsePosts(completion: @escaping ([PostData]) -> Void) {
var tempData = [PostData]()
let databaseRef = Database.database().reference(withPath: "Посты")
databaseRef.observe(.value) { (snapshot, error) in
for child in snapshot.children {
let snap = child as! DataSnapshot
let res = snap.value as! [String: Any]
let title = res["Заголовок"] as! String
let subtitle = res["Подзаголовок"] as! String
let img = res["URL"] as! String
let date = res["Дата"] as! String
tempData.append(PostData(title: title, subtitle: subtitle, imgURL: img, date: date))
}
DispatchGroup().notify(queue: .main) {
self.tableView.reloadData()
let postCell = PostCell()
postCell.dataForPosts = tempData
print(postCell.dataForPosts, "в старом классе" ) // Выводит, что нужно
}
completion(tempData)
}
}
А вот уже код TableViewCell (
PostCell.swift), где количество элементов массива
dataForPosts равно нулю, хотя если вызывать с Social.swift, то все хорошо:
var dataForPosts:[PostData] = []
...
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: self.PostCollectionID, for: indexPath)
print(self.dataForPosts, " - в другом классе ") // Выводит пустой массив
cell.layer.borderWidth = 5
cell.layer.cornerRadius = 20
return cell
}
Как можно решить эту проблему? Спасибо