我正在使用以下代码从url中异步下载文件,
NSMutableData *responseData = [[NSMutableData alloc] init];
NSURL *url = [NSURL URLWithString:@"http://www.tuiscos.com/images/trading.png"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// do something with data
[responseData appendData:data];
myImage8.image = [UIImage imageWithData:data];
NSInteger len = response.expectedContentLength;
NSInteger receiverdBytes = 0;
receiverdBytes = data.length+ receiverdBytes;
float prog = (float)[responseData length]/(float)len;
[progress8 setProgress:prog];
}];
随着下载的进行,我想更新进度条,但是使用这段代码,我没有逐渐进步,而是等待完成下载并跳转到最大值。我怎样才能在价值上逐步取得进步? 有人可以提供示例代码吗?对于使用委托方法的异步方法。 谢谢:))
答案 0 :(得分:1)
如果您不想自己编码所有内容,我建议您在此任务中使用ASIHTTPRequesst:
http://allseeing-i.com/ASIHTTPRequest/How-to-use
实现起来非常简单,您可以同时进行异步下载。它还为代表提供了所有需求,也为进度更新提供了支持。
我在我的项目中使用它已近一年了,从不后悔。
答案 1 :(得分:0)
当然,CompletionHandler在完成时执行。您必须有一个委托才能建立连接。使用-initWithRequest:delegate:方法。您必须编写NSURLConnectionDelegate方法的代码,并且您需要设置progressView的值是-connection:didReceiveData: