从 URLSession 在 Swift 2+ 中存储文件



我正在下载一个大文件,当它完成时

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

方法被调用。

我想在本地保存生成的文件,例如NSSearchPathDirectory.DocumentDirectory。但是我对此有一些问题,主要是因为文件非常大 500MB+

我试过:

NSFileManager.defaultManager().createFileAtPath(savePath, 
                                                contents: fileData, 
                                                attributes: nil)

这适用于 100MB <较小的文件,但较大的文件会死亡>

Code=12 "Cannot allocate memory"

尝试将下载的文件转换为 NSData 时,如下所示:

let data: NSData = try NSData(contentsOfURL: location,
                              options: NSDataReadingOptions.DataReadingMappedIfSafe)

问题是,有没有另一种方法可以将location: NSURL转换为NSData,这样大文件就不会出现内存问题?

或者除了NSFileManager.defaultManager().createFileAtPath()之外,有没有更好的方法来保存大文件,这样它就不需要NSData

> 尝试使用 NSFileManager 的 copyItemAtURL:toURL:error: 将文件从位置复制到您想要的任何位置

相关内容

  • 没有找到相关文章

最新更新