我的目标是将一系列网址(例如,25个网址)下载为字符串,并在网址全部下载完毕后进行报告。
目前,我可以从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)
}
}
}
}
虽然我意识到我可以轻松地将我的网址打包到一个数组中,但我的难点在于让该流程报告当数据的所有网址被下载时(或者有错误&#39) ;编辑)。任何帮助表示赞赏。
答案 0 :(得分:0)
快捷方式
NSNotifications
您设置了下载完成时触发的通知,然后在应用程序的其他位置侦听该通知。
这篇文章解释了如何; https://blog.bobthedeveloper.io/pass-data-with-nsnotification-in-swift-3-73743723c84b
正确的方式
竞赛处理程序