2017-07-12 4 views
0

Mon objectif est de télécharger un tableau d'URL (par exemple, 25 URL) sous forme de chaînes et de signaler le moment où les URL ont toutes été téléchargées.Comment télécharger de manière asynchrone un tableau d'URL en tant que chaînes

En ce moment, je suis en mesure de télécharger avec succès à partir de 1 page Web, tel que configuré ci-dessous:

override func viewDidLoad() { 
    super.viewDidLoad() 
    let url = URL(string: "https://www.apple.com") 
    self.downloadWebpage(url: url!) 
} 

func getDataFromUrl(url: URL, completion: @escaping (_ data: Data?, _ response: URLResponse?, _ error: Error?) -> Void) { 
    URLSession.shared.dataTask(with: url) { (data, response, error) in 
     completion(data, response, error) 
     if error != nil { 
      print (error.debugDescription) 
     } 
    }.resume() 
} 

func downloadWebpage(url: URL) { 
    getDataFromUrl(url: url) { (data, response, error) in 
     guard let data = data, error == nil else { return } 
     print(response?.suggestedFilename ?? url.lastPathComponent) 
     print("Download Finished") 
     print (data) 
     DispatchQueue.main.async() {() -> Void in 
      if let returnData = String(data: data, encoding: .utf8) { 
       print (returnData) 
      } 
     } 
    } 
} 

Alors que je me rends compte que je pouvais facilement emballer mes URL dans un tableau, ma difficulté est de tirer le processus signaler que lorsque tous les des URL de la matrice sont téléchargés (ou, ont eu une erreur). Toute aide est appréciée.

Répondre