ios取消NSURLConnection Swift

标签 ios swift asynchronous nsurlconnection

我有以下代码:

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。我有一个函数,当用户想要退出幻灯片时执行,但我不确定要添加什么代码才能正确取消此连接。

最佳答案

NSURLConnectionsendAsynchronousRequest 不是可取消的请求。但无论如何,NSURLConnection 已被弃用,您应该使用 NSURLSession。而NSURLSessiondataTask是可取消的。

所以,而不是:

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()

关于ios取消NSURLConnection Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384790/

相关文章:

multithreading - Oauth2;如何解决同时进行的多个异步 api 调用期间 AccessToken 过期的问题?

ios - 在 XCode 上为 Playground 设置 "Value History"和 "Quick Look"的默认文本颜色

iphone - UITabBarController 中的 UINavigationController 存在 View 生命周期问题

ios - 如何使用 Swift 遍历 Array<Dictionary<String,String>>

ios - 快速移动按钮和相机

javascript - 从异步回调函数将对象推送到本地数组

javascript - 如何在 node.js 中异步递归 API 回调?

android - React Native Android App 中 TextInput 下的意外行

iphone - 在 xcode iOS 中将事件添加到日历

ios - Swift 单元测试无法识别新的类初始值设定项