如何在下载文件时为NSURLConnection创build进度条?

我想在NSURLConnection下载的同时显示进度条。 当我从服务器获取数据时,我可以更新每个收到的包的UI。 但问题是:我怎么知道我已经有多less数据了,需要下载多less数据呢? 大概以字节为单位…然后,我必须做一些math来获得百分比?

在你的NSURLConnection委托中,执行这样的事情来找出总的内容长度。 服务器必须支持这个function,但是对于静态内容来说,它很可能会正常工作:

 - (void)connection: (NSURLConnection*) connection didReceiveResponse: (NSHTTPURLResponse*) response { statusCode_ = [response statusCode]; if (statusCode_ == 200) { download_.size = [response expectedContentLength]; } } 

然后更新进度如下:

 - (void) connection: (NSURLConnection*) connection didReceiveData: (NSData*) data { [data_ appendData: data]; download_.progress = ((float) [data_ length] / (float) download_.size); // Broadcast a notification with the progress change, or call a delegate } 

在我的情况下,我有一个具有sizeprogress属性的下载实例。 它们由全局DownloadManager对象拥有,将负责通知有关各方下载进度或状态更改。