2016-07-07 4 views
1

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

ответ

Смежные вопросы