Я скачивает большой файл и когда он заканчивает методСохранение файла в Swift 2+ из URLSession
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
?