如何在Alamofire中暂停/恢复/取消我的下载请求

Zee*_*han 19 ios swift alamofire

我正在使用Alamofire下载文件下载有进展但我不知道如何暂停/恢复/取消特定请求.

@IBAction func downloadBtnTapped() {

 Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination)
     .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in
         println(totalBytesRead)
     }
     .response { (request, response, _, error) in
         println(response)
     }
}


@IBAction func pauseBtnTapped(sender : UIButton) {        
    // i would like to pause/cancel my download request here
}
Run Code Online (Sandbox Code Playgroud)

mat*_*ttt 35

保留对downloadBtnTapped使用属性创建的请求的引用,并cancel在其中调用该属性pauseBtnTapped.

var request: Alamofire.Request?

@IBAction func downloadBtnTapped() {
 self.request = Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination)
}

@IBAction func pauseBtnTapped(sender : UIButton) {
  self.request?.cancel()
}
Run Code Online (Sandbox Code Playgroud)

  • `request.cancel()`不保证立即取消请求.这使得取消后调用进度块.有没有内置的方法来检查取消/暂停是否被调用? (2认同)

mar*_*one 21

request.cancel()将取消下载进度.如果要暂停并继续,可以使用:

var request: Alamofire.Request?

@IBAction func downloadBtnTapped() {
 self.request = Alamofire.download(.GET, "http://yourdownloadlink.com", destination: destination)
}

@IBAction func pauseBtnTapped(sender : UIButton) {
  self.request?.suspend()
}

@IBAction func continueBtnTapped(sender : UIButton) {
  self.request?.resume()
}

@IBAction func cancelBtnTapped(sender : UIButton) {
  self.request?.cancel()
}
Run Code Online (Sandbox Code Playgroud)