2017-04-17 54 views
0

我试图将多个图像上传到firebase存储,并且在上传任务完成后,应用程序需要执行某些操作。我做了一些研究,在这种情况下我发现屏障是有用的。我跟着tutorial,但似乎我的代码无法正常工作。我错过了什么?下面是代码:在swift3中实现屏障

func uploadImages(completion: (()->Void)){ 
    // creating a queue 
    let uploadImagesQueue = DispatchQueue(label: "upLoadImages", attributes: .concurrent) 
    for i in 0..<numOfImages{ 
     uploadImagesQueue.async{ 
      // upload each of the images 
     } 
    } 
    uploadImagesQueue.async(flags: .barrier){ 
     completion() 
    } 
} 

这段代码的问题是,completion()所有上传的部分运行前完成。我怎样才能解决这个问题?

回答

0

也许在uploadImagesQueue.async块内,您上传图像是异步的(使用uploadTask !?)。然后在提交uploadTask时完成异步块。 而不是使用DispatchQueue,只需使用Firebase的uploadTask。