I hope this is something you can use:
class ViewController: UIViewController , NSURLSessionDownloadDelegate {
    var download : NSURLSessionDownloadTask?
    var backgroundSession : NSURLSession?
    override func viewDidLoad() {
        super.viewDidLoad()
        let sessionConfiguration : NSURLSessionConfiguration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("CustomBackgroundIdentifier")
        backgroundSession = NSURLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
        var btn = UIButton(frame: CGRectMake(0, 0, 100, 100))
        btn.backgroundColor = UIColor.redColor()
        btn.addTarget(self, action: "startDownload", forControlEvents: UIControlEvents.TouchDown)
        self.view.addSubview(btn)
        var btn2 = UIButton(frame: CGRectMake(0, 120, 100, 100))
        btn2.backgroundColor = UIColor.blueColor()
        btn2.addTarget(self, action: "cancelDownload", forControlEvents: UIControlEvents.TouchDown)
        self.view.addSubview(btn2)
    }
    func startDownload() {
        if download == nil {
            if let url = NSURL(string: "http://www.stackoverflow.com") {
                download = backgroundSession?.downloadTaskWithURL(url)
                download?.resume()
            }
        } else {
            resumeDownload()
        }
    }
    func pauseDownload() {
        if download != nil {
            download?.suspend()
        }
    }
    func resumeDownload() {
        if download != nil {
            download?.resume()
        }
    }
    func cancelDownload() {
        if download != nil {
            download?.cancel()
        }
    }
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
        println("Session %@ download task %@ finished downloading to URL %@\n",
        session, downloadTask, location)
    }
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
        println("downloaded: %i",totalBytesWritten)
    }
}