【问题标题】:How to loop download pdf in swift4 from array of url如何从url数组循环下载swift4中的pdf
【发布时间】:2018-04-05 08:11:43
【问题描述】:
我想从我的服务器端从 url 数组循环下载 pdf 文件,我想让它在用户关闭视图控制器并打开主窗体时在后台运行,同样在主窗体中,我们可以再次打开下载视图控制器查看下载进度。我已经用 Alamofire 完成了它并将其用作递归(在下载每个文件完成后再次调用自身并使用带有 popLast 函数的 for-loop 从数组中弹出 url)但问题是我无法跟踪在后台,我无法检查后台请求是否已经在运行。如果我们在alamofire中做不到,那么urlsession可以实现我想要做的吗?
请帮忙。我真的需要你的所有帮助,我也是 IOS 和 Stackoverflow 的初学者,如果我在某个地方错了,请原谅我。
【问题讨论】:
标签:
alamofire
swift4
urlsession
【解决方案1】:
到目前为止,我从您的描述中了解到您需要同步所有任务。在您的情况下,您可以使用 DispatchGroup。它允许工作的聚合同步。您可以使用它提交多个不同的 pdf URL 以下载并跟踪它们何时通过 group.notify 方法完成。
查看下面的示例代码:
func fetchPdfFiles(){
let group = DispatchGroup()
let urlList = ["Pdfurl1", "Pdfurl2", "Pdfurl3"]
// start your progressbar if you like
for str in urlList {
group.enter()
call_your_alamofire_Request(url: str, onCompletion: { (response) in
do {
//save your pdf
//Update progress bar
} catch let error {
print("Error:", error)
//Handle error
}
group.leave()
})
}
group.notify(queue: .main) {
print("- all pdfs Download done")
// Finally you need to do what ever if you like
//Stop progressbar
}
}