Alk*_*Alk 2 asynchronous nsurlconnection ios 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.....
Run Code Online (Sandbox Code Playgroud)
这在向用户显示图像幻灯片时在后台运行,它基本上下载更多要显示的图像并将它们附加到图像阵列.问题是用户可以随时退出幻灯片,在这种情况下我需要取消它NSURLConnection.我有一个功能,当用户想要退出幻灯片时执行,但我不知道要添加什么代码来正确取消此连接.
NSURLConnection这sendAsynchronousRequest不是可取消的请求.但是NSURLConnection,无论如何,已弃用,你应该使用NSURLSession.和NSURLSession的dataTask是取消.
所以,而不是:
NSURLConnection.sendAsynchronousRequest(request, queue: queue) { response, data, error in
do {
....code.....
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用:
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
do {
....code.....
}
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
而且,如果你需要取消它,你可以做到task.cancel().
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |