【发布时间】:2018-05-07 07:53:14
【问题描述】:
我在 for in 循环中运行完成处理程序,所以是的,循环中的异步操作...
这就是我加入DispatchGroups()的原因:
for fileName in fileNames {
group.enter()
let url = URL(fileURLWithPath: "\(self.documentsUrl.path)/\(fileName)")
let ref = storage.reference().child("pathTo/\(fileName)")
let _ = ref.putFile(from: url, metadata: nil) { metadata, error in
print("completed")
if let error = error {
print("error")
} else {
print("success")
}
self.removeFile()
group.leave()
}
}
group.notify(queue: .main, execute: {
print("finished")
})
好吧,文件路径存在,但我在控制台中没有得到任何打印,但我需要在每个异步操作完成后得到通知。有人可以帮我吗?
【问题讨论】:
-
如果将所有 for 代码放入 DispatchQueue.main.async{} 方法而不是 group.enter 会发生什么?
-
设置断点,看看打印的内容。顺便说一句,“完成”是否正在打印?
-
嘿,我包含了 DispatchQueue.main.async{} 并且控制台中仍然没有打印..有人可以指导我如何让回调工作,这样我就可以对成功/错误事件做出反应?
-
控制台中没有打印什么?你能解释一下,你在哪里调用你的完成处理程序?
-
您想在所有操作完成后通知?然后在您打印完成的语句之后调用您的闭包
标签: ios swift loops asynchronous completionhandler