我正在发送一个基于计时器触发的请求。但是,如果我按下后退按钮,请求似乎仍然处于事件状态,而响应又使应用程序崩溃。请提出取消请求的方法。
使用 Xcode 8.2.1 swift 3
这是示例请求:
Alamofire.request(path!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: createHeader()).responseJSON {
response in
switch response.result {
case .success(let data):
success(data as AnyObject?)
case .failure(let error) :
failure(error as NSError)
}
}
甚至尝试使 viewDidDisappear 上的计时器无效,但无济于事。
谢谢!!
最佳答案
Alamofire 4/Swift 3/Xcode 8
您可以取消单个请求,如下所示:
1 - 首先获取请求:
let request = Alamofire.SessionManager.default.request(path!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: createHeader()).responseJSON { response in
switch response.result {
case .success(let data):
success(data as AnyObject?)
case .failure(let error) :
failure(error as NSError)
}
}
2 - 然后,在您的 viewDidDisappear 中,只需调用:
request.cancel()
您可以取消所有请求,如下所示:
Alamofire.SessionManager.default.session.getTasksWithCompletionHandler { (sessionDataTask, uploadData, downloadData) in
sessionDataTask.forEach { $0.cancel() }
uploadData.forEach { $0.cancel() }
downloadData.forEach { $0.cancel() }
}
关于ios - 取消请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41478122/