如何从url数组中循环下载swf4中的pdf

时间:2018-04-05 08:11:43

标签: alamofire swift4 urlsession

我想从我的服务器端循环下载来自url数组的pdf文件,我希望在用户关闭viewcontroller并打开主窗体时让它在后台运行,同样在主窗体中我们可以再次打开下载viewcontroller到看下载的进度。我已经用Alamofire完成它并将其用作递归(在下载每个文件完成后再次调用自身并使用for循环使用popLast函数从数组中弹出url)但问题是我无法跟踪请求在后台,我无法检查后台请求是否已经在运行。如果我们不能在alamofire中做到这一点,那么urlsession能实现我想做的事吗?

请帮助。我真的需要你的帮助,我也是IOS和Stackoverflow的初学者,如果我在某个地方出错,请原谅我。

1 个答案:

答案 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
 }
}