我正在尝试让我的应用程序使用调度组来确保在继续之前已发送所有邀请.我认为notify
只有在enters
匹配后才会调用回调,leave
但我的多次调用似乎是多次调用,这是我的代码:
for invite in invites { dispatchGroup.enter() let ref = FIRDatabase.database().reference().child("users").child(invite.id).child("invites") print(invite) ref.updateChildValues([name: nameTextField.text!]) { (error, ref) -> Void in dispatchGroup.leave() dispatchGroup.notify(queue: DispatchQueue.main, execute: { print("YOYOYO") }) } }
在我的控制台中,我看到2个"YOYOYO"让我很困惑.任何人都可以告诉我,如果我这样做不正确或者我的假设是错误的吗?
你可能有两个invites
.移动dispatchGroup.notify
出的for
循环,如果你希望所有后得到通知invites
进行处理:
for invite in invites { dispatchGroup.enter() let ref = FIRDatabase.database().reference().child("users").child(invite.id).child("invites") print(invite) ref.updateChildValues([name: nameTextField.text!]) { (error, ref) -> Void in dispatchGroup.leave() } } dispatchGroup.notify(queue: DispatchQueue.main) { print("YOYOYO") }