问题描述
如何在for循环中发送响应POST urlsession任务。我有一个创建“客户和联系人”的视图。我将联系人存储在数组中。我有两个端点postAccount和Postcontacts(notBulkPost);在postAccount之后,我循环抛出列表联系人以将其一一插入。但是该任务仅插入第一个联系人。如何在for循环中发布联系人。
func showUIAlertCreate(_ numberOfNewUsers:Int) {
let alert = UIAlertController(title: "Company Created",message: "A new company has been created and \(numberOfNewUsers) new users have been added. An email has been sent to these users to complete their account setup.",preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK",style: .default,handler: { action in
DataService.shared.PostAccount("23242-07","2sdfsd",UUID().uuidString,self.txtfCompanyName.text!,self.dataSource.newContacts,completion: { result in
switch result {
case .success(let account):
for index in self.dataSource.newContacts {
DataService.shared.PostContacts("23242-07","sdfsdf",account.accountID,index,completion: { result in
switch result {
case .success(let data):
print("done!")
DispatchQueue.main.async{
self.performSegue(withIdentifier: "segueToUsersTab",sender: nil)
}
break;
case .failure(let error):
fatalError("message: error \(error)")
}
})
}
break;
case .failure(let error):
fatalError("message: error \(error)")
}
})
}))
self.present(alert,animated: true,completion: nil)
}
解决方法
let dispatchGroup = DispatchGroup()
...
for index in self.dataSource.newContacts {
dispatchGroup.enter()
DataService.shared.PostContacts("23242-07","sdfsdf",account.accountID,index,completion: { result in
// Do your stuff here
dispatchGroup.leave()
}
}