Я пытаюсь извлечь всех пользователей в массив и использовать обратный вызов, когда это будет сделано. Мне нужно знать, когда загрузка завершена. Я понял, что это может не сработать, как я думал с childAdded, поэтому я пытаюсь с наблюдать за SingleEvent, но у меня возникают проблемы с получением в массив. Есть идеи почему?
Этот код с childAdded работает с помещением данных в массив, но не с завершением, даже если я помещаю его внутрь.
self.ref?.child("Users").observe(DataEventType.childAdded, with: { (snapshot) in
// Fetch users
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.nameLabel = dictionary["Username"] as? String
user.occupationLocation = dictionary["Occupation"] as? String
user.ageLabel = dictionary["Age"] as? String
user.infoText = dictionary["Bio"] as? String
user.emailText = dictionary["email"] as? String
let email = user.emailText
let ref = Database.database().reference().child("Users")
ref.queryOrdered(byChild: "email").queryEqual(toValue: email).observeSingleEvent(of: .childAdded, with: { (snapshot) in
user.toId = snapshot.key
})
self.usersArray.append(user)
}
})
//dump(self.usersArray)
completion("FetchAllUsersKlar")
Этот код вообще не работает:
self.ref?.child("Users").observeSingleEvent(of: .value, with: { (DataSnapshot) in
// Fetch users
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.nameLabel = dictionary["Username"] as? String
user.occupationLocation = dictionary["Occupation"] as? String
user.ageLabel = dictionary["Age"] as? String
user.infoText = dictionary["Bio"] as? String
user.emailText = dictionary["email"] as? String
let email = user.emailText
let ref = Database.database().reference().child("Users")
ref.queryOrdered(byChild: "email").queryEqual(toValue: email).observeSingleEvent(of: .childAdded, with: { (snapshot) in
user.toId = snapshot.key
})
self.usersArray.append(user)
}
completion("FetchAllUsersKlar")
})
Firebase выглядит так: