Téléchargement en background de plusieurs milliers d'image

Bonjour,

Je voudrais lancer en background le téléchargement de 1000 à 3000 images (jpeg de 256x256 pix).
Ce téléchargement est lancé à la demande l'utilisateur et il faudrait que l'avancement soit affiché en nombre d'images téléchargées sur nombre d'image total.

Pour le moment, j'ai créé une URLSession en mode background et je lance une tâche par image depuis le thread principal sur une boucle
for n: [String: Int] in xyzlist{
let task = session.downloadTask(with: URL(string:"monUrlUtilisantxyz))
task.resume()
}

Cela semble fonctionner correctement, mais impossible d'actualiser ma progressView (je repasse bien dans le thread principal avec DispatchQueue.main.async...).

Plusieurs questions :

  • est-ce que c'est la boucle dans le thread principal qui gèle mon interface et empêche la mise à jour de ma progress view ?
  • avez-vous une meilleure technique pour mettre en oeuvre ce téléchargement en background d'une grande quantité de petits fichiers avec un suivi de l'avancement global ?

Merci pour votre aide !

Mots clés:

Réponses

  • Jean-PhiJean-Phi Membre
    octobre 2018 modifié #2

    Je précise un peu mon souci. En fait, à chaque fichier téléchargé, je passe bien sur le point d'arrêt 84, mais je n'arrive sur le 85 qu'à la fin de l'ensemble des téléchargements...

  • Trouvé !

    En fait ça marchait avec un petit nombre d'images ; j'ai donc lancé mes tâches dans un thread en arrière plan et ma progress view se met bien à jour au fil des téléchargements.

Connectez-vous ou Inscrivez-vous pour répondre.