ios - 取消请求

标签 ios xcode swift3 http-post alamofire

我正在发送一个基于计时器触发的请求。但是,如果我按下后退按钮,请求似乎仍然处于事件状态,而响应又使应用程序崩溃。请提出取消请求的方法。

使用 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/

相关文章:

xcode - variable.storage 在 Xcode 调试变量 View 中是什么意思?

ios - 在 Swift 3 中使用 NSNumber 和整数值

ios - 将 2 个值组合成一个 NSPredicate

ios - SVG 在 Safari 中出现不需要的 alpha mask 行为

ios - 如何在本地存储 JSON 资源?

iphone - 将 NSManagedObject 复制到内存中的新对象

ios - 如何从 iOS Swift 3 的键盘上删除更改语言键按钮

ios - 自适应启动屏幕 Storyboard : is there a way to differentiate iPad orientations?

ios - 将原始音乐文件从主包转换为 MPMediaItem

objective-c - 当键盘出现在 iOS 中时,将 UIView 上移