Ank*_*pta 25 xcode http-post ios alamofire swift3
我发送的请求是基于计时器触发的.但是,如果我按下后退按钮,请求似乎仍然处于活动状态,而响应又会导致应用程序崩溃.请建议一种取消请求的方法.
使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
甚至尝试在viewDidDisappear上使计时器无效,但没有帮助.
谢谢 !!
Enr*_*que 40
您可以取消以下单个请求:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
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() }
}
Run Code Online (Sandbox Code Playgroud)
你尝试过这个解决方案了吗
let sessionManager = Alamofire.SessionManager.default
sessionManager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach { $0.cancel() }
uploadTasks.forEach { $0.cancel() }
downloadTasks.forEach { $0.cancel() }
}
Run Code Online (Sandbox Code Playgroud)
我还添加一个检查来验证这是否是我要取消的请求:
dataTasks.forEach
{
if ($0.originalRequest?.url?.absoluteString == url)
{
$0.cancel()
}
}
Run Code Online (Sandbox Code Playgroud)
环球银行金融电信协会5
Alamofire.Session.default.session.getTasksWithCompletionHandler({ dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach { $0.cancel() }
uploadTasks.forEach { $0.cancel() }
downloadTasks.forEach { $0.cancel() }
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14717 次 |
| 最近记录: |