在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写了新的代码)