gpt4 book ai didi

ios - 如何在 Swift 中取消正在进行的 HTTP 请求?

转载 作者:IT王子 更新时间:2023-10-29 05:26:30 24 4
gpt4 key购买 nike

我的代码像这样GET请求:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { () -> Void in
// ...

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
if error != nil {
println("error = \(error)")
return
}

if let HTTPresponse = response as? NSHTTPURLResponse {
if HTTPresponse.statusCode == 200 { // Successfully got response
var err: NSError?
if let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: &err) as? [String : AnyObject] {
// Success decoding JSON
} else {
// Failed -> stop activity indicator
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.activityIndicator.stopAnimating()
})
}
}
task.resume()
})
}
}

如果 viewWillDisappear() 在请求完成之前被调用,我想停止请求。

现在,似乎在请求完成之前 View 并没有消失。有没有办法取消正在进行的 GET/POST 请求?

最佳答案

是的,但是你必须存储它以供外部访问 - task 有一个方法 cancel() 你可以使用它,就像你使用 恢复()

对于 viewDidDisappear(),我建议将其作为对象属性 - var currentTask: NSURLSessionTask?,在您的调度中,您将拥有 self.currentTask = ... 而不是 let task = ... 并且在您的 viewDidDisappear() 中您将调用 self.currentTask?.cancel().

关于ios - 如何在 Swift 中取消正在进行的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31345250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com