Sekvensiell opplasting / serie kø med alamofire

stemmer
0

Jeg bruker Alamofireog en seriell DispatchQueueå prøve og laste opp ett bilde om gangen fra en rekke bilder. Jeg ønsker å laste opp en om gangen slik at jeg kan oppdatere en enkelt fremgang HUD som hver enkel opplasting går gjennom. Koden min ser omtrent slik ut:

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
        })
    }
}

Problemet er at mine uploadImage()samtaler er alle utfører på en gang. Jeg tror dette er fordi Alamofireforespørsler kjøre asynkront. Noen ideer om hvordan du best kan løse dette?

Publisert på 02/12/2019 klokken 23:56
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Alamofire kjører i sin egen bakgrunn kø, så du kan prøve

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])
        }
    })
}

Anrop

uploadimg(images.first!)
Svarte 03/12/2019 kl. 00:17
kilden bruker

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