Sekvenční upload / serial fronta s alamofire

hlasů
0

Já používám Alamofirea sériové DispatchQueuesnažit nahrát jeden obrázek najednou z řady snímků. Chtěl bych nahrát jeden po druhém, takže můžu aktualizovat jediný pokroku HUD jako každý nahrání prochází. Můj kód vypadá nějak takto:

let serialQueue = DispatchQueue(label: project.serialQueue)
for image in images {
    serialQueue.async {
        uploadImage(image: image, progress: { progress in 
            //update progress HUD
        }, completion: { json, error in 
            //dismiss HUD
        })
    }
}

Problém je v tom, že mé uploadImage()volání jsou vykonávající najednou. Myslím, že je to proto, že Alamofirepožadavky jsou spustit asynchronně. Nějaké nápady na to, jak co nejlépe vyřešit?

Položena 02/12/2019 v 23:56
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Alamofire běží ve svém vlastním pozadí fronty, takže si můžete vyzkoušet

var counter = 0
func uploadImg(_ img:UIImage) {
    uploadImage(image: img, progress: { progress in 
        //update progress HUD
    }, completion: { json, error in 
        //dismiss HUD
        self.counter += 1
        if self.counter < images.count {
           self.uploadImg(images[counter])
        }
    })
}

Volání

uploadimg(images.first!)
Odpovězeno 03/12/2019 v 00:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more