我是新手Swift,这个问题可能真的很愚蠢。所以请和我一起。
Swift
我有一个collection要通过Webservice电话重置的设备。这是我Function现在的样子(尚未完成)
collection
Webservice
Function
func resetDevice(completion: () -> ()) { for device in devices { device.isValid = 0 DeviceManager.instance.updateDevice(device).call { response in print("device reset") } } }
我不太确定该打电话给我的完成电话,也不确定如何100%确保所有电话都已结束。有什么帮助吗?
我建议使用调度组:
func resetDevice(completion: () -> ()) { let dispatchGroup = DispatchGroup() for device in devices { dispatchGroup.enter() device.isValid = 0 DeviceManager.instance.updateDevice(device).call { response in print("device reset") dispatchGroup.leave() } } dispatchGroup.notify(queue: DispatchQueue.main) { // Some code to execute when all devices have been reset } }
每个设备都立即进入该组,但直到收到响应后才离开该组。在所有对象都离开组之前,不会调用最后的notify块。