2010-10-26 71 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