【发布时间】:2019-01-22 01:32:46
【问题描述】:
我不知道实现这一目标的最佳方法是什么。我试图通过网络调用保持我循环并添加在一起的 Double 值的运行总数。我读过的所有内容都说要使用 DispatchGroup。我的完成要么调用得太早,要么根本没有被调用,我已经尝试了所有我能想到的 .enter、.leave 和 .wait 配置。
let group = DispatchGroup()
var runningTotal: Double = 0.00
ref.observeSingleEvent(of: .value) { (snapshot) in
guard let bills = snapshot.value as? [String: AnyObject] else {
//error
return
}
for billId in bills.keys {
group.enter()
print("Entering")
Database.database().reference().child("bills").child(billId).observeSingleEvent(of: .value, with: { (snapshot) in
guard let bill = snapshot.value as? [String: AnyObject] else {
return
}
if let amount = bill["amount"] as? Double {
runningTotal += amount
}
group.leave()
print("Leaving")
})
}
completion(runningTotal)
}
group.wait()
}
【问题讨论】:
标签: swift firebase firebase-realtime-database grand-central-dispatch