2014-08-29 124 views
4

我有這樣兩個問題在這裏,首先我不能設置NSURLSessionDownloadDelegate以迅速的項目,編譯器說下載一個文件NSURLSession斯威夫特

Type 'ViewController' does not conform to protocol 'NSURLSessionDownloadDelegate' 

第二個問題是,我不能找到NSURLSession方法來下載一個簡單的文件

這裏是我用來下載簡單的文件

var url:NSURL = NSURL.URLWithString(fileURL) 
    var request:NSURLRequest = NSURLRequest(URL: url) 
    var downloadTask:NSURLSessionDownloadTask = sessionManager.downloadTaskWithRequest(request) 
    downloadTask.resume() 

的方式,這些都是我想在迅速

使方法
URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite 

..

URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location 

..

URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error 

.. 如果是下載與NSURLSession文件什麼新的NSURLSession在一個新的方法,我想知道,和swift

回答

7

我現在是一個具有後臺下載管理器的項目,這裏有一些東西,我如何解決d是:

,如果您使用的是NSURLSessionDownloadDelegate需要實現以下方法:

func URLSession(session: NSURLSession!, downloadTask: NSURLSessionDownloadTask!, didFinishDownloadingToURL location: NSURL!) 

func URLSession(session: NSURLSession!, downloadTask: NSURLSessionDownloadTask!, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) 

func URLSession(session: NSURLSession!, downloadTask: NSURLSessionDownloadTask!, didFinishDownloadingToURL location: NSURL!) 

我與此調用做到了這一點:

var session:NSURLSession! 


    var sessionConfiguration:NSURLSessionConfiguration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.company") 
    sessionConfiguration.HTTPMaximumConnectionsPerHost = 5 

    self.session = NSURLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) 

//上下載

var downloadTask:NSURLSessionDownloadTask = self.session.downloadTaskWithURL(NSURL.URLWithString("urlfromyourfile")) 
downloadTask.resume() 

//出錯:

func URLSession(session: NSURLSession!, task: NSURLSessionTask!, didCompleteWithError error: NSError!) { 

    if(error != nil) { 

     println("Download completed with error: \(error.localizedDescription)"); 

    } else { 

     println("Download finished successfully"); 

    } 

} 

這裏你可以找到一個很好的教程(我用大量的代碼來自教程,並寫了它新的與SWIFT)

http://www.appcoda.com/background-transfer-service-ios7/

+0

爲什麼Xcode是說'類型「視圖控制器」不符合協議'NSURLSessionDownloadDelegate'',如果我寫這些方法,它沒有錯誤,它是一個錯誤,並期待這個問題,請你會更多地瞭解我的問題[Myquestion](http://stackoverflow.com/questions/25574391/什麼是這種委託 - 這種nsurlsession-methods-in-swift) – 2014-08-29 19:12:21

+0

XCode是什麼時候告訴你這個錯誤? – derdida 2014-08-29 19:33:53

+0

我曾經在obj-c中首先添加委託,這樣xcode會自動完成委託的方法,但是在xcode 6中,當我設置這個'NSURLSessionDownloadDelegate'時,編譯器告訴我這個錯誤,因爲我沒有寫代理它反轉的方法,我認爲? – 2014-08-29 19:44:17