3

我正在使用 AFNetworking 框架下载文件并将它们写入本地文件系统。

但是由于文件可能很大,我想添加一个UIProgressView,但我似乎找不到任何可以随着进度更新的方法。

我看到人们在谈论 setProgressBlock,但我在文档中找不到任何相关信息:http: //afnetworking.org/Documentation/Classes/AFHTTPRequestOperation.html

有没有一种方法可以做到这一点?我只是AFHTTPRequestOperation用来下载文件。

4

2 回答 2

15

参考以下代码。这是使用 AFNetworking 代码下载的一些文件。

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];
于 2012-08-16T10:39:02.323 回答
9

setDownloadProgressBlock方法是 的一部分AFURLConnectionOperation,从中AFHTTPRequestOperation继承 - 这就是您在AFHTTPRequestOperation文档中看不到它的原因。您需要的文档在这里:

http://cocoadocs.org/docsets/AFNetworking/1.3.1/Classes/AFURLConnectionOperation.html

于 2012-08-16T10:34:17.107 回答