如何在swift中按下取消按钮时取消下载请求

时间:2015-08-14 04:08:58

标签: ios swift nsurlsession

我想在取消按钮时取消下载请求。 现在当我按下代码后按下载按钮

@IBAction func downloadButtonPressed(sender: UIButton) {            
                var fileName = noticeAttacchment[0]["fileName"] as! String
                var fileUrl =  noticeAttacchment[0]["fileUrl"] as! String
                if var URL = NSURL(string: fileUrl){
                    Api.load(URL, fileName: fileName)      
                }
    }

我的下载程序类是

 class Api {
    class func load(URL: NSURL , fileName : String) {
                let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
                let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
                let request = NSMutableURLRequest(URL: URL)
                request.HTTPMethod = "GET"
                let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
                    if (error == nil) {
                        FileSave.saveData(
                            data, directory: NSSearchPathDirectory.CachesDirectory, path: fileName, subdirectory: "edstem")
                    }
                    else {
                        println("Faulure: %@", error.localizedDescription);
                    }
                })
                task.resume()
            }
    }

那么如何在按下取消按钮时取消请求

1 个答案:

答案 0 :(得分:5)

您的load()功能需要return您创建的NSURLSessionDataTask。然后,您致电task.cancel()取消请求

额外Reference