2012-08-16 48 views
3

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

但由于文件可能相当大,我想添加一个UIProgressView,但我似乎无法找到任何获取进度更新的方法。

我看到人们在谈论setProgressBlock,但我无法找到有关此内容的文档的任何信息:http://afnetworking.org/Documentation/Classes/AFHTTPRequestOperation.html

有没有做到这一点的方法?我只是使用AFHTTPRequestOperation下载文件。

回答

9

setDownloadProgressBlock方法是AFURLConnectionOperation一部分,从中AFHTTPRequestOperation继承 - 这就是为什么你看不到它的AFHTTPRequestOperation文档。你后的文档是在这里:

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

+0

谢谢,我忽略了这一点。 – 2012-08-16 10:58:03

+0

给定的URL不起作用。 [This](http://cocoadocs.org/docsets/AFNetworking/1.3.1/Classes/AFURLConnectionOperation.html)是网址。 – esh 2013-06-21 18:48:32

+0

谢谢,他们已经改变了他们的文档链接,因为我发布了(当时Cocoadocs不存在)。我已经修改了答案。 – lxt 2013-06-21 18:54:48

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]; 
+0

非常感谢这个例子! – 2012-08-16 10:59:08

+4

注意:变量bytesRead是一个NSUInteger。谢谢! – Lolloz89 2013-03-07 08:44:10

相关问题