gpt4 book ai didi

swift - 如何以字符串形式异步下载 URL 数组

转载 作者:行者123 更新时间:2023-11-30 12:18:48 24 4
gpt4 key购买 nike

我的目标是以字符串形式下载一组 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/

关于swift - 如何以字符串形式异步下载 URL 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com