Bonjour,

j'essai d'obtenir les en-tetes d'url distant afin de savoir si je dois ou non telecharger le fichier.
Ma fonction asynchrone fonctionne parfaitement lorsqu'elle est lancée séparément mais ne renvoie plus aucune valeur lorsque elle est lancé lors d'un parcours de tableau d'url.
Pouvez-vous me dire pourquoi? Et comment je dois modifier mon code pour que cela fonctionne?

Voici la fonction qui obtient les en-têtes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    func getHeaderInformations (myUrl: URL, completion: @escaping (_ content: String?) -> ()) {
        var request = URLRequest(url: myUrl)
        request.httpMethod = "HEAD"
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            guard error == nil, let reponse = response as? HTTPURLResponse, let contentType = reponse.allHeaderFields["Content-Type"],let contentLength = reponse.allHeaderFields["Content-Length"]
 
                else{
                    completion(nil)
                    return
            }
            let content = String(describing: contentType) + "/" + String(describing: contentLength)
 
            completion(content)
        }
        task.resume()
    }
et voici la fonction qui parcours le tableau des url et lance la premiere:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   // download picture
    func downloadPic (){
        let minimumSize=UserDefaults.standard.object(forKey: "Minimum_size") as! Int64
        var imgExtension:String=""
        var type:String=""
        var size:Int64=0
 
        for (_,item) in LiensImgArrayURL.enumerated() {
            getHeaderInformations(myUrl: item, completion: { content in
               let myInfoArray = content?.components(separatedBy: "/")
                type=(myInfoArray?[0])!
                imgExtension=(myInfoArray?[1])!
                size=Int64((myInfoArray?[2])!)!
            })
            if (type=="image" && size>=minimumSize) {
                SaveFileToDirectory(myRemoteUrl: item, myExtension: imgExtension)
            }
            }
    }
Merci d'avance pour vos réponses car je galère vraiment...