Доброго времени суток, уважаемые!
Никак не могу найти в инете ничего подходящего и сам не могу додумать.
Есть функция которая получает массив данных из FireBase.
class GalleryViewController: UIViewController {
var ref: DatabaseReference!
var Books = [Book]()
var UsersGlobal = [String]()
@IBOutlet weak var GalleryCollectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
GalleryCollectionView.delegate = self
GalleryCollectionView.dataSource = self
self.ReadBooks()
}
func ReadBooks() {
var GetBooks = [Book]()
ref = Database.database().reference()
let queue = DispatchQueue.global(qos: .utility)
queue.async{
self.ref.child("Users").observe(.value, with: { snapshot in
if snapshot.exists() {
if let result = snapshot.children.allObjects as? [DataSnapshot] {
for child in result {
self.UsersGlobal.append(child.key)
}
}
}
for item in self.UsersGlobal {
self.ref.child("Users").child(item).observeSingleEvent(of: .childAdded, with: { (snapshot) in
for item2 in snapshot.children.allObjects as! [DataSnapshot] {
let NewBook = Book(snap: item2)
GetBooks.append(NewBook)
}
self.Books += GetBooks
self.GalleryCollectionView.reloadData()
})
}
})
DispatchQueue.main.async {
}
}
}
после получения данных мне нужно заполнить ими CollectionView.
self.GalleryCollectionView.reloadData() - эта строка мне не нравится там где она находится сейчас- она какой то костыль.
Хочу получить нормально после отработки функции весь массив данных, поработать с ним и потом уже сделать self.GalleryCollectionView.reloadData() .
Но в конце функции все массивы пустые (self.Books, GetBooks)
в какой части кода мне получить данные, что бы были вины вне зоны функции.
не пойму почему глобальный массив self.Books , если его посмотреть в конце функции , пуст …