从 NSURLSessionDownloadDelegate 下载的数据存储在哪里?

Where is the data from NSURLSessionDownloadDelegate that was downloaded stored?

所以当我运行这个函数

func run(u: String) {
    let URL = NSURL(string: u)
    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession(configuration: config, delegate: self, delegateQueue: nil)
    let dtask = session.downloadTaskWithURL(URL!)
    dtask.resume()
}

我期待这个方法:

func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
    NSOperationQueue.mainQueue().addOperationWithBlock({
        let text = NSString(contentsOfURL: location, encoding: NSUTF8StringEncoding, error: nil)
        println(text)
        self.done()
    })
}

打印已下载文件的位置,但它总是 returnnil。

它不应该 return 实际路径吗?即使 location 变量也总是 nil...

func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
        let text = NSString(contentsOfURL: location, encoding: NSUTF8StringEncoding, error: nil)
        println(text)
        self.done()
 )

试试上面的代码

使用此方法之前,您必须保存下载的数据didFinishDownloadingToURL return .

比如你可以在内存中使用,或者将tmp文件移动到另一个dic中。

如果你使用你的代码,当你执行你的块时,方法有 returned.Because 如果你使用 addOperationwithBlock,它是一个异步 block.It 将首先 return,然后执行堵塞。 所以在你的情况下,当你完成下载时,你的方法 return 首先,然后你执行 block.So,你什么都没有