Joo*_*. P 12 cocoa-touch ios nsurlsession swift
我的代码执行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()
})
}
}
Run Code Online (Sandbox Code Playgroud)
如果viewWillDisappear()在请求完成之前调用,我想停止请求.
现在,似乎视图在请求完成之前不会消失.有没有办法取消正在进行的GET/POST请求?
Mic*_*hal 16
是的,但你必须存储它以供外部访问 - 你可以使用task一种方法cancel(),就像你正在使用的那样resume().
因为viewDidDisappear()我建议将它作为对象属性 - var currentTask: NSURLSessionTask?在您的发送中,您将拥有self.currentTask = ...而不是let task = ...在您的viewDidDisappear()调用中self.currentTask?.cancel().
| 归档时间: |
|
| 查看次数: |
9299 次 |
| 最近记录: |