У меня есть расширение для нескольких пользователей, и я могу выбрать несколько пользователей и несколько изображений для всех выбранных пользователей. Для этого я использовал группу рассылки, и есть два l oop 1 для всех пользователей и внутри этого l oop для всех выбранных изображений.
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 l oop завершения. Swift 5 / Xcode 11,3