2015-08-14 110 views
1

我想取消下載請求時,我按下取消按鈕。 現在,當我按下下載按鈕下面的代碼工作取消按鈕在快速按下時如何取消下載請求

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

因此,如何取消當取消按鈕按下

請求

回答

3

load()函數需要return的您創建的NSURLSessionDataTask。然後調用task.cancel()取消請求

額外Reference

+0

這怎麼可能,請解釋一下? – azhar

+1

'dataTaskWithRequest(_ :)'返回你已經在你的任務變量中擁有的'NSURLSessionDataTask'。所以你可以像調用task.resume()一樣調用task.cancel()。現在清楚嗎? – libec

相關問題