我正在发送一个基于计时器触发的请求。但如果我按下返回按钮,请求似乎仍然处于活动状态,并且响应反过来会使应用程序崩溃。请提出一种取消请求的方法。
使用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)
}
}
字符串
甚至试图无效的计时器上查看消失,但没有帮助。
谢谢你!
6条答案
按热度按时间mf98qq941#
Alamofire 4 / Swift 3 / Xcode 8
您可以取消单个请求,具体操作如下:
1 -首先获取请求:
字符串
2 -然后,在您的viewDidDisappear中,只需调用:
第一个月
您可以取消所有请求,如下所示:
型
j1dl9f462#
this解决方案:
字符串
我还添加了一个检查,以验证这是否是我想要取消的请求:
型
rnmwe5a23#
SWIFT 5
字符串
b4wnujal4#
如果它能帮助任何人,在我的情况下,我在SessionManager上有一个RequestRetrier,它在请求被取消后重试,所以一定要检查那里!
vnjpjtjt5#
不如这样:
字符串
vyswwuz26#
Alamofire 5在
Session
上有一个取消所有请求的函数:字符串
另一个是
withAllRequests
,可用于对活动请求集执行操作。电子邮件:https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#operating-on-all-requests
另外,请注意,Alamofire文档指出,底层
URLSession
对象:应该NOT用于与底层
URLSessionTask
进行交互。这样做会破坏跟踪这些任务的内部Alamofire逻辑。