我在尝试上传和下载文件时尝试做一些进度指示。
一直在阅读,看起来这是我需要使用的方法。
- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
我想更多地了解该功能是如何工作的(即何时调用等),但似乎无法找到参考文档。我去了这个网址,但它没有说明这个特定的功能。
我在哪里可以阅读更多相关信息?
谢谢你,
三通
答案 0 :(得分:2)
NSURLConnection
为其代表制定了非正式协议。这在iOS 5中发生了变化(我认为在OSX上也是如此)。他们弃用NSURLConnection
中声明的方法,并将其移至正式协议NSURLConnectionDelegate
和NSURLConnectionDataDelegate
。
现在是有趣的部分。他们弃用了这些方法,他们甚至从NSURLConnection
文档中删除了它们,但它们没有记录新的正式协议。
目前,仅记录了NSURLConnectionDelegate
。 <{1}}未在任何地方提及。
有两种方法可以找到方法的作用。
查看以前版本的NSURLConnectionDataDelegate
文档(例如iOS 4.3)。我会给你一个链接,但我无法在网上找到它。也许您已经在XCode中下载了库
在Xcode中按cmd-shift-o,键入NSURLConnection
并按Enter键。您找到了标题,方法在那里有描述:
连接:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: 在上传操作期间调用以提供 进展反馈。请注意,值可能 如果请求需要,以意外的方式改变 被转发。
答案 1 :(得分:0)
尝试AFNetworking如果您担心支持,它正在成为ASIHTTPRequest的流行替代品。它还内置了对下载进度的支持。 (See discussion on this link.)Here is a recent discussion of how to actually use it。
更新
How do I track upload or download progress?(AFNetworking faq)
AFURLConnectionOperation提供方法setUploadProgressBlock:和setDownloadProgressBlock:。每个方法都采用一个参数,该参数是一个在请求生命周期内定期执行的块。该块没有返回类型,并且有3个参数:为此回调读取或写入的字节数,到目前为止读取或写入的总字节数,以及预期要读取或写入的总字节数。
如果要更新进度条,可以设置相应的进度块,将进度量设置为读取或写入的总字节数除以预期数,标准化在0.0和1.0之间。基于此值的UI更新将在发出请求时异步更新。