iOS:如何使用操作队列下载大量数据?

时间:2013-10-07 11:34:35

标签: ios image

我正在开发一个iOS应用程序,我必须在设备上本地下载图像和视频等大数据。数据可以是GB,可以下载数千个文件。那么,什么是解决这种情况的最佳方法。因为它可能有很多失败,比如请求超时等等。

此外,如果文件已成功下载,我必须更新核心数据。

任何最好和最简单的方法将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试一下AFNetworking框架,为您处理几乎所有内容,并且可能更快地实现。

也可以使用GCD在后台线程上下载。我下载50Mb文件时得到了不错的结果。

答案 1 :(得分:0)

您可以使用AFNetworking。它是现在处理Web服务的最佳API。您可以从github和。下载适用于iOS的最新AFNetworking API。

你可以使用

  - (void)uploadImageAtUrl:(NSURL*)url
{
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"yourImg.jpg"], 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData:imageData name:@"yourImg" fileName:@"yourImg.jpg" mimeType:@"image/jpeg"];
}];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {

    //Check progress
    NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[httpClient enqueueHTTPRequestOperation:operation];

}