如何在for循环Swift中发送响应POST urlsession任务?

问题描述

如何在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)
}

解决方法

尝试DispatchGroup

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()
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...