2017-04-17 5 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を使用してください。

関連する問題