ios - 嵌套循环的调度组
问题描述
我已经与多个用户列表共享扩展,我可以为所有选定的用户选择多个用户和多个图像。为此,我使用了调度组,所有用户都有两个循环 1,所有选定图像在该循环内。
let myGroup = DispatchGroup()
let myGroupMain = DispatchGroup()
let dispatchQueue = DispatchQueue.global(qos: .background)
dispatchQueue.async {
for indexPath in self.indexPathContain {
myGroupMain.enter()
for (index, attachment) in (content.attachments as! [NSItemProvider]).enumerated() {
myGroup.enter()
let paramDict = [
"id":"0",
"chat_id":modelList.id!,
"sender_id": x,
"image":"",
"receiver_id": modelList.sender_id!,
"type": "1",
"message": "",
"file":dataArr,
] as [String : Any]
self?.socket?.emit("upload_files", paramDict)
myGroup.leave()
}
myGroup.notify(queue: .main) {
myGroupMain.leave()
}
}
myGroupMain.notify(queue: .main) {
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
print(i)
}
}
在上述情况下,当我执行时,它将myGroupMain.notify没有完成myGroup循环完成。斯威夫特 5/Xcode 11.3
解决方案
早些时候,我也遇到过同样的问题。我通过定义myGroup
和myGroupMain
全局解决了这个问题。
请参考下面的代码。
class ClassName {
let myGroup = DispatchGroup()
let myGroupMain = DispatchGroup()
let dispatchQueue = DispatchQueue.global(qos: .background)
func yourCode(){
dispatchQueue.async {
for indexPath in self.indexPathContain {
myGroupMain.enter()
for (index, attachment) in (content.attachments as! [NSItemProvider]).enumerated() {
myGroup.enter()
let paramDict = [
"id":"0",
"chat_id":modelList.id!,
"sender_id": x,
"image":"",
"receiver_id": modelList.sender_id!,
"type": "1",
"message": "",
"file":dataArr,
] as [String : Any]
self?.socket?.emit("upload_files", paramDict)
myGroup.leave()
}
myGroup.notify(queue: .main) {
myGroupMain.leave()
}
}
myGroupMain.notify(queue: .main) {
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
print(i)
}
}
}
推荐阅读
- python-3.x - 通过UART写入微控制器
- java - 如何修复我的排序方法所以我得到名字的字母顺序
- ibm-cloud - IBM Cloud Functions:是否可以让一个函数由多个 Javascript 文件组成?
- reactjs - 无法在已解析的 html 中修改子项
- python - 在 GroupByKey 之后减少 PCollection
- dart - How to make HTTP request on dart and pass parameters
- python - 一组开关和灯的最大流量
- protractor - 改变
量角器中的值 - selenium - 如何获得在其上执行 selenium 脚本的应用程序的代码覆盖率?
- php - 加载数据文件的无缓冲查询错误