在Swift中用NSURLSession下载一个文件

编译器说,我有2个问题在这里,首先我不能设置NSURLSessionDownloadDelegate一个快速的项目

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在迅速

我现在正在一个有背景下载pipe理器的项目中,这里有一些事情,我如何解决这个问题:

如果您使用的是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"); } } 

在这里你可以find一个很好的教程(我使用了很多来自该教程的代码,并用swift写了新的代码)

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