【发布时间】:2019-10-09 15:32:17
【问题描述】:
我试图在 swift 循环下调用“observeSingleEvent”,但它在本地循环完成后被调用
func fetchAllComments(){
let myGroup = DispatchGroup()
DispatchQueue.main.async {
myGroup.enter()
for index in self.spotVideos {
var id = String(index.videoId)
print(id)
var count = 0
self.videoRef = rootRef.child(id)
self.videoRef!.observeSingleEvent(of: .value) { snapshot in
print(snapshot.childrenCount)
myGroup.leave()
}
myGroup.wait()
}
myGroup.notify(queue: .main) {
print("Finished all requests.")
}
}
}
【问题讨论】:
-
您将异步 firebase 调用放入异步调度队列中,并在 firebase 一遍又一遍地返回数据时离开组。你能澄清一下你想在那里做什么吗?此外,通常不鼓励将 firebase 调用放在一个紧密的循环中——它也可以帮助我们理解你的 Firebase 结构——你能把它包括进去吗?要获取您的 Firebase 结构,请使用 Firebase 控制台->导出 JSON,然后复制并粘贴您的结构的 sn-p。见images and links are evil
-
在每个 id 上,我试图检查有多少孩子
-
还有一点不清楚为什么 `self.videoRef' 是一个类 var - 它在这个循环中被一遍又一遍地替换,所以可能应该只是一个本地函数 var。
标签: swift firebase firebase-realtime-database grand-central-dispatch