Потому что наблюдаю за работой асинхронно, и вы печатаете users.count перед обновлением массива users ...
учаю снимок всех пользователей в моей базе данных Firebase. После того, как я добавляю всех моих пользователей из моего узла «users» в моей базе данных в массив пользователей, я пытаюсь напечатать количество пользователей (которое должно быть 12), и вместо этого появляется 0.
Я добавил точку останова в закрывающей скобке оператора if, которая показывает мне, что число пользователей достигает 12. Однако к тому времени, когда приходит время печатать это число, оно равно нулю. Проходя через кучу раз, это просто много ассемблерного кода, который мне ничего не говорит.
Я вызываю эту функцию в методе viewDidLoad () и пытаюсь напечатать счетчик пользователей после вызова этой функции, в дополнение к печати ее внутри функции, и она по-прежнему равна 0.
func getUsers() {
let ref = Database.database().reference().child("users")
ref.observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.id = snapshot.key
user.setValuesForKeys(dictionary)
self.users.append(user)
}
}, withCancel: nil)
print(users.count)
}