2017-04-17 3 views
0

Ich versuche, mehrere Bilder in den Firebase-Speicher hochzuladen, und die App muss nach Abschluss der Upload-Aufgaben etwas tun. Ich habe etwas recherchiert, und ich fand, dass in diesem Fall eine Barriere nützlich ist. Ich folgte dem tutorial, aber es scheint, dass mein Code nicht richtig funktioniert. Was habe ich verpasst? Hier ist der Code:Sperre implementieren in 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() 
    } 
} 

Das Problem dieser Code ist, dass completion() läuft vor allem der Upload Teile beenden. Wie kann ich das beheben?

Antwort

0

Vielleicht haben Sie die Bilder innerhalb des uploadImagesQueue.async-Blocks asynchron hochgeladen (mithilfe von uploadTask !?). Dann ist der Async-Block zu dem Zeitpunkt beendet, zu dem die Upload-Task gesendet wurde. Verwenden Sie anstelle von DispatchQueue einfach die uploadTask von Firebase.