Потому что наблюдаю за работой асинхронно, и вы печатаете 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)
}

Ответы на вопрос(2)

Ваш ответ на вопрос