我想从我的服务器端循环下载来自url数组的pdf文件,我希望在用户关闭viewcontroller并打开主窗体时让它在后台运行,同样在主窗体中我们可以再次打开下载viewcontroller到看下载的进度。我已经用Alamofire完成它并将其用作递归(在下载每个文件完成后再次调用自身并使用for循环使用popLast函数从数组中弹出url)但问题是我无法跟踪请求在后台,我无法检查后台请求是否已经在运行。如果我们不能在alamofire中做到这一点,那么urlsession能实现我想做的事吗?
请帮助。我真的需要你的帮助,我也是IOS和Stackoverflow的初学者,如果我在某个地方出错,请原谅我。
答案 0 :(得分:0)
到目前为止,我从您的描述中了解到您需要同步所有任务。在您的情况下,您可以使用 DispatchGroup 。它允许工作的聚合同步。您可以使用它来提交多个不同的pdf网址,以便通过 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
}
}