Ios 如何在Swift中取消正在进行的HTTP请求?
我的代码不会得到这样的请求:Ios 如何在Swift中取消正在进行的HTTP请求?,ios,swift,cocoa-touch,nsurlsession,Ios,Swift,Cocoa Touch,Nsurlsession,我的代码不会得到这样的请求: 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 {
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()
})
}
}
如果在请求完成之前调用了viewwilldemouse()
,我想停止请求
现在,在请求完成之前,视图似乎不会消失。有没有办法取消正在进行的GET/POST请求?是的,但您必须将其存储起来供外部访问-任务
有一个方法cancel()
,您可以使用该方法,就像使用resume()
一样
对于viewdidenseal()
我建议将其作为对象属性-var currentTask:NSURLSessionTask?
,在调度中,您将使用self.currentTask=…
而不是let task=…
,并在viewdidenseal()
中调用self.currentTask?.cancel()