如何将 URL 数组异步下载为字符串



我的目标是下载一个URL数组(例如,25个URL(作为字符串,并在URL全部完成下载时报告。

目前,我能够从1个网页成功下载,配置如下:

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 都被下载(或出错(时。任何帮助将不胜感激。

快速方法

NSNotifications

您将通知设置为在下载完成后触发,然后在应用程序的其他位置侦听该通知。

本文解释了如何; https://blog.bobthedeveloper.io/pass-data-with-nsnotification-in-swift-3-73743723c84b

正确的方式

竞赛处理者

https://thatthinginswift.com/completion-handlers/

最新更新