我正在使用AFNetworking框架下载文件并将其写入本地文件系统。
但由于文件可能很大,我想添加一个UIProgressView
,但我似乎无法找到任何随着进度而更新的方法。
我看到有人在谈论setProgressBlock,但我在文档中找不到任何相关信息:http://afnetworking.org/Documentation/Classes/AFHTTPRequestOperation.html
有没有这样做的方法?我只是使用AFHTTPRequestOperation
下载文件。
答案 0 :(得分:15)
参考以下代码。这是使用AFNetworking Code进行的一些文件下载。
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://blahblah.com/blahblah.mp3"]];
AFURLConnectionOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [paths objectAtIndex:0] stringByAppendingPathComponent:@"blahblah.mp3"];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
[operation setDownloadProgressBlock:^(NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead)
{
myProgressView.progress = (float)totalBytesRead / totalBytesExpectedToRead;
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"downloadComplete!");
}];
[operation start];
答案 1 :(得分:9)
setDownloadProgressBlock
方法是AFURLConnectionOperation
的一部分,AFHTTPRequestOperation
继承了该方法 - 这就是您在AFHTTPRequestOperation
文档中没有看到它的原因。你所追求的文件在这里:
http://cocoadocs.org/docsets/AFNetworking/1.3.1/Classes/AFURLConnectionOperation.html