【问题标题】:iOS - Progressive Download Indicator While Downloading FilesiOS - 下载文件时的渐进式下载指示器
【发布时间】:2012-12-13 23:22:17
【问题描述】:

所以这个问题已经被问过很多次了,但所有的答案都是我们不再支持的 ASIHTTP 库。

所以我希望有人能引导我朝着正确的方向前进。 我使用 NSData 在我的应用程序中下载文件(图像/视频),并且想知道如何显示实际跟踪下载进度的进度条/指示器(即 20%、30% 等)

是否有任何内置类允许使用进度更新跟踪文件下载?

【问题讨论】:

    标签: ios download nsdata progress


    【解决方案1】:

    如果您有 NSURLConnection 代表,那么:

    • 您接收到connection:didReceiveResponse:NSURLResponse 将是NSHTTPURLResponse 类型。如果您访问[[response allHeaderFields] valueForKey:@"Content-Length"],您将获得一个字符串,其中包含您期望接收的数据长度;
    • 随后通过connection:didReceiveData:的数据积累,你就会知道返回了多少数据。

    既然您知道您收到了多少字节以及您期望多少字节,您就可以很容易地计算出百分比。

    【讨论】:

    • 嗯,我并没有真正考虑过尝试以这种方式下载文件。我会试一试..
    • 那么如何设置下载文件的 URL?我只在获取 JSON 响应时使用了 NSURLConnections...
    • 哦,对了,所以你只是在使用[NSData dataWithContentsOfURL:]?您必须切换到在NSURLConnection 上创建一个完整的并分配一个代表。因此,您将使用 connectionWithRequest:delegate: 创建合适的 NSURLRequestNSURL
    【解决方案2】:

    ASIHTTP 有几个替代选项。领先的是AFNetworking。它包括对下载进度条的支持。

    【讨论】:

    • 我尽可能远离过多的 3rd 方库和 SDK。但如果我找不到更原生的分辨率,我会调查一下。
    【解决方案3】:

    查看 ASIHTTPRequest 。太棒了,会做更多更奇妙的事情。

    http://allseeing-i.com/ASIHTTPRequest/

    【讨论】:

    • 正如发帖者所说,ASIHTTP 不再处于开发阶段,不是一个好的长期选择。
    • 对不起,我错过了。我已经使用它多年并且喜欢它。而且它是开源的,所以如果我需要它,我会更改它。
    猜你喜欢
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2012-09-24
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多