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:
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 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() }
Merci d'avance pour vos réponses car je galère vraiment...
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) } } }
Partager