- 此问题在此处已有答案**:
(13个答案)
两年前关闭了。
我尝试获取Firebase中的文档计数。每当我尝试在闭包中为文档计数分配变量时,值都是null
。根据文章,联网需要一些时间,并且是异步发生的。因此,由于异步行为,在闭包中返回值可能会在赋值之前发生。
我尝试添加dispatchqueue.main.async,但它不起作用。
"这是我的密码"
func getEventCount () -> Int? {
var count: Int?
db.collection("Events").whereField("owner", isEqualTo: currentUser.email).getDocuments { (snapshot, error) in
if error != nil {
print(error)
}else {
DispatchQueue.main.async {
if let snapshot = snapshot {
count = snapshot.count
}
}
}
}
return count
}
- 我的主要目标**是从数据库中获取文档计数,并分配一个名为
count
的变量。
- 我的主要目标**是从数据库中获取文档计数,并分配一个名为
1条答案
按热度按时间zdwk9cvp1#
一旦它是异步调用-您就不能从函数同步返回值。您应该接受对将接受计数的函数的回调。该回调函数或闭包将异步传递值。
然后,您可以调用此函数并传入回调
注意:在上面的代码中,我使用了Swift标准库中的Result数据类型-https://developer.apple.com/documentation/swift/result,这样错误和结果都可以被传递回来