2016-07-07 2 views
1

Ich bin eine große Datei herunterzuladen, und wenn es die OberflächenSpeichern einer Datei in Swift 2+ aus URLSession

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

Methode wird aufgerufen.

Ich möchte die resultierende Datei lokal speichern, NSSearchPathDirectory.DocumentDirectory zum Beispiel. Aber ich habe mit diesem einige Probleme, vor allem, weil die Dateien sehr groß sind 500MB +

Ich habe versucht:

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

die für kleinere Dateien < 100MB aber größere Dateien sterben mit

funktioniert gut
Code=12 "Cannot allocate memory" 

Beim Versuch, die heruntergeladene Datei auf NSData wie diese zu konvertieren:

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

Die Frage ist, gibt es eine andere Möglichkeit, die location: NSURL zu NSData nur so umwandeln, damit es keine Speicherprobleme mit großen Dateien gibt?

Oder gibt es eine bessere Möglichkeit, die große Datei als NSFileManager.defaultManager().createFileAtPath() nur so zu speichern, so dass NSData nicht erforderlich ist?

Antwort

Verwandte Themen