![](/img/trans.png)
[英]iOS Swift - NSURLConnection.sendAsynchronousRequest cancel request
[英]ios Cancel NSURLConnection Swift
我有以下代码:
func getStoryContent( cityID : String, completionHandler: (loaded: Bool, dataNil: Bool) -> ()) -> () {
let scriptUrl = "***"
var user_id = "nil"
if let userID = NSUserDefaults.standardUserDefaults().stringForKey("userId") {
user_id = userID
}
var params = ***
let myUrl = NSURL(string: scriptUrl);
let request: NSMutableURLRequest = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let data = params.dataUsingEncoding(NSUTF8StringEncoding)
request.timeoutInterval = 10
request.HTTPBody=data
request.HTTPShouldHandleCookies=false
let queue:NSOperationQueue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
do {
....code.....
当向用户显示图像幻灯片时,它在后台运行,基本上可以下载更多要显示的图像并将它们附加到图像数组中。 问题是用户可以随时退出幻灯片放映,在这种情况下,我需要取消此NSURLConnection
。 当用户想要退出幻灯片放映时,我有一个执行的功能,但是我不确定要添加什么代码以正确取消此连接。
NSURLConnection
的sendAsynchronousRequest
不可取消请求。 但是无论如何, NSURLConnection
已被弃用,您应该使用NSURLSession
。 并且NSURLSession
的dataTask
是可取消的。
因此,代替:
NSURLConnection.sendAsynchronousRequest(request, queue: queue) { response, data, error in
do {
....code.....
}
}
您可以使用:
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
do {
....code.....
}
}
task.resume()
而且,如果需要取消它,可以执行task.cancel()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.