2017-04-17 55 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。