iOS Swift 3,Alamorfire:在调用函数之前等待所有图像上传完成

时间:2017-03-27 08:01:37

标签: ios asynchronous swift3 alamofire

我有一个视图,其中包含多个按钮,允许用户单击并上传每个按钮的图像,上传图像后,服务器将返回该图像的URL。视图底部的“保存”按钮,用于调用api以将视图中的所有信息(包括这些图像的URL)保存到我的服务器。

enter image description here

我正在使用Alamofire上传图片。 问题在于:当用户选择要上传的图片时,我会立即调用上传API并在后台上传该照片,我不要等到用户点击“保存”按钮并上传所有信息&图像一下子。

我希望当用户点击“保存”按钮,但图像没有完成上传时,视图将等待上传完成,然后自动调用“保存”功能。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

一种解决方案是使用DispatchGroup

//Create a dispatch group
let dispatchGroup = DispatchGroup()

for picture in listOfPicturesToUpload {
    //Enter the group
    dispatchGroup.enter()

    self.upload(picture, completion:{
        //Leave the group on upload completion
        dispatchGroup.leave
    })
}

//Called when all the requests are finished
dispatchGroup.notify(queue: DispatchQueue.global(qos: .background)) {
    //Call the save function as all the requests are finished.
    self.save()
}