2016-08-02 32 views
4

Ich habe ein sehr großes Video und ich muss dieses Video chunk, um es auf Dropbox hochladen.Wie behandelt man große Dateien mit NSData?

Ich habe versucht, NSData zu verwenden, aber weil diese Datei zu groß ist, stürzt meine Anwendung immer ab, so dass ich nicht weiß, was ich jetzt tun kann.

Für kleinere Videos, habe ich dies:

NSData(contentsOfURL: self.newAsset.URL)!.subdataWithRange(NSMakeRange(0, 10000000)) 

und ich habe kein Problem damit, aber wenn das Video zu groß ist, habe ich einen Fehler:

Cannot allocate memory

So Was kann ich tun, um die Daten großer Videos zu teilen?

Antwort

0

Sie sollten Video-Datei-URL verwenden, um große Daten mit NSURLSession

- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL; 
2

Für beste mit NSURLSession gehen Praxis zu laden, wenn Sie benutzerdefinierte sonst viel für Dritte Bibliothek implementieren möchten gibt es wie RESTKit oder AFNetworking. Für NSURLSession unterstützt die Sitzung NSURLSession drei Arten von Aufgaben: Datenaufgaben, Download-Aufgaben und Upload-Aufgaben. All dies unterstützt auch die Hintergrund-Uploads/Downloads. Quelle (apple developer)

  • Datenaufgaben senden und empfangen Daten mit NSData-Objekten. Datenaufgaben sind für kurze, oft interaktive Anfragen von Ihrer App an einen Server gedacht. Datentasks können Daten nach jedem Datenempfang Stück für Stück an Ihre App zurückgeben oder auf einmal über einen Beendigungshandler.
  • Download-Aufgaben rufen Daten in Form einer Datei ab und unterstützen Hintergrund-Downloads, während die App nicht ausgeführt wird.
  • Upload-Aufgaben senden Daten in Form einer Datei und unterstützen Hintergrund-Uploads, während die App nicht ausgeführt wird.

Image Source raywenderlich.com Image Source: