如何使用NSData处理大文件?

时间:2016-08-02 12:30:20

标签: ios swift nsdata avurlasset swiftydropbox

我有一个非常大的视频,我需要将此视频分块以将其上传到 Dropbox

我尝试使用NSData,但因为这个文件太大,我的应用程序总是崩溃,所以我不知道我现在能做什么。

对于较小的视频,我使用了这个:

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

我没有遇到任何问题,但是当视频太大时我有一个错误:

  

无法分配内存

那么,我该如何处理大型视频的数据呢?

2 个答案:

答案 0 :(得分:2)

要获得最佳做法,请使用NSURLSession,如果您要实施自定义,则第三方库的批量应用RESTKitAFNetworking。对于NSURLSession,会话NSURLSession支持三种类型的任务:数据任务,下载任务和上载任务。所有它也支持后台上传/下载。源(apple developer

  • 数据任务使用NSData对象发送和接收数据。数据任务旨在用于从应用程序到服务器的简短,通常是交互式请求。数据任务可以在收到每个数据后一次一个地将数据返回给您的应用程序,或者通过完成处理程序一次性返回到您的应用程序。
  • 下载任务以文件形式检索数据,并在应用未运行时支持后台下载。
  • 上传任务以文件形式发送数据,并在应用未运行时支持后台上传。

图片来源raywenderlich.com Image Source:

答案 1 :(得分:0)

您应该使用视频文件网址使用NSURLSession上传大数据

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