我正在检索Firebase数据库中所有用户的快照 . 在我将所有用户从我的数据库的“用户”节点附加到用户数组后,我尝试打印用户计数(应该是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 回答
你走了,下面修复一下 . 就像艾哈迈德所说:由于它是异步的,因此需要一些时间来获取数据 .
这是非常简单的事情,我刚刚添加了一个完成处理程序 .
因为异步观察工作,并且在更新用户数组之前打印users.count ...