2017-07-12 3 views
0

私の目標は、URLの配列(たとえば25個のURL)を文字列としてダウンロードし、URLのダウンロードがすべて完了したときに報告します。現時点でURLの配列を文字列として非同期にダウンロードする方法

の下に構成されているように、私は、1つのWebページから、正常にダウンロードすることができる午前:

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

私は簡単に、アレイ内の私のURLをパッケージ化する可能性が実現しますが、私の難しさがにプロセスを得ることについてです配列のURLのすべてがダウンロードされた(またはエラーが発生した)と報告します。いかなる援助も感謝します。

答えて

関連する問題