24
我想在使用NSURLConnection進行下載時顯示進度條。當我從服務器獲取數據時,我可以更新每個收到的包的UI。但問題是:我怎麼知道我已經有多少數據,以及需要下載多少數據?大概以字節爲單位......然後我必須做一些數學才能得到百分比?如何在下載文件時爲NSURLConnection創建進度條?
我想在使用NSURLConnection進行下載時顯示進度條。當我從服務器獲取數據時,我可以更新每個收到的包的UI。但問題是:我怎麼知道我已經有多少數據,以及需要下載多少數據?大概以字節爲單位......然後我必須做一些數學才能得到百分比?如何在下載文件時爲NSURLConnection創建進度條?
在你的NSURLConnection
委託中,實現類似這樣的事情來找出總的內容長度。服務器必須支持這一點,但它很可能會很好地工作靜態內容:
- (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
}
在我來說,我有一個具有size
下載實例和progress
屬性。它們由全球DownloadManager
對象擁有,該對象將負責通知有關各方下載進度或狀態更改。