ios - NSURLConnection 的进度条

标签 ios objective-c nsurlconnection

我想在从 url 下载视频时显示进度条。我不知道哪里出了问题,而且 expectedContentLength 总是显示 -1。这是代码。

-(void)getResource{
bytesReceived  = 0;
self.progressView.progress = 0.0;
NSString *string = @“MY_URL";
NSMutableURLRequest *request =[[NSMutableURLRequest alloc] initWithURL:
[NSURL URLWithString:string]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
self.feedConnection =  [[NSURLConnection alloc]initWithRequest:request delegate:self]
}


-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
self.responseData = [NSMutableData data];
[self.responseData setLength:0];
float length = [response expectedContentLength];
expectedBytes = [NSNumber numberWithUnsignedInteger:length];
NSLog(@"expected bytes  %f %@",length,expectedBytes);
}

 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.responseData appendData:data];
float progress = (float)[self.responseData length]/[expectedBytes floatValue];
NSLog(@"%f / %f  is %f", (float)[self.responseData length] ,[expectedBytes floatValue],progress);
self.progressView.progress = progress;
}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
   self.feedConnection = nil;
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
self.feedConnection = nil;
[self.view setBackgroundColor:[UIColor blackColor]];
[self fetchedData:self.responseData];
self.responseData = nil;
}

最佳答案

我认为,您可以使用 NSURLConnectionDownloadDelegate 方法,该方法将获取 totalBytes 以及已下载的数据量。

 - (void)connection:(NSURLConnection *)connection 
       didWriteData:(long long)bytesWritten 
  totalBytesWritten:(long long)totalBytesWritten 
 expectedTotalBytes:(long long) expectedTotalBytes; 

关于ios - NSURLConnection 的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22091684/

相关文章:

ios - 如何将UILabel文本中的更改与相关动画同步?

ios - Apple Watch 强制触控菜单

ios - 将 PonyDebugger 与 Monotouch 一起使用?

iphone - NSURLConnection 中的恢复下载功能

ios - Xcode 代码自动完成函数中的奇怪行为

ios - 具有约束的 Swift 协议(protocol)扩展不会使类符合该协议(protocol)

ios - 无法使用桥接 header 中导入的 Objective C 框架

iphone - 我想使用像 UIBezierPath 这样的任何关闭路径来裁剪图像。可以在 iPhone 应用程序中使用吗?

iphone - 一个 View 中的两个 NSURLConnections

ios - 如何测量 iOS 设备上的 safari 浏览器中的网页加载时间