gpt4 book ai didi

ios - (Firebase)在计算数组中的用户时在数据库中打印错误的用户数

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:17 25 4
gpt4 key购买 nike

我正在检索我的 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)
}

最佳答案

给你,下面是修复。正如 Ahmed 所说:获取数据需要一些时间,因为它是异步的。

func getUsers(completionHandler:@escaping (Int) -> ()){

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)
completionHandler(self.users.count)
}
})

override func viewDidLoad() {
super.viewDidLoad()
getUsers(){ (count) in
print(count)
}
}

发生的事情非常简单,我只是添加了一个完成处理程序。

关于ios - (Firebase)在计算数组中的用户时在数据库中打印错误的用户数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com