2010-10-26 70 views

回答

3

一言以蔽之:[data length]

這裏有一個如何下載吧我使用作品的片斷。

// Can get called numerous times during download process 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
// Accumulate incoming data into mutable data object 
[fileData appendData:data]; 
byteCount += [data length]; 
float progress = byteCount/(mapToDownload.fileSize); 
[self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:progress] waitUntilDone:NO]; 
} 

讓我知道你是否需要更多信息。

[新增10月26日,以解決您的其他問題:]

我還沒有與NSStream工作。我的例子來自一個異步NSURLConnection的例子。因此,讓我們忽略我以前的代碼示例。你提到你有[NSData bytes][NSData length]應該返回您有多少數據。假設您知道要下載的大小,那麼:

float progressPercentage = [yourNSData length]/knownFileSize; 

應該爲您提供更新進度條所需的百分比。然後你可以設置你的進度條:

[yourProgressBar setProgress:progressPercentage]; 
+0

什麼是變量fileData和byteCount?當我收到數據時使用NSStreamOutput,所以我不使用appendData。當我同時使用NSStreamOutput時,考慮使用它會是安全的嗎? – lab12 2010-10-26 03:19:11

+0

感謝您的新答案! – lab12 2010-10-27 00:05:03

+0

沒有問題。很高興它有幫助。 – dredful 2010-10-27 21:51:06