从 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,你什么都没有
所以当我运行这个函数
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,你什么都没有