博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发下载文件速度计算
阅读量:4647 次
发布时间:2019-06-09

本文共 1218 字,大约阅读时间需要 4 分钟。

当我们写下载界面的时候,需要向用户展示每秒下载多少KB,这个时候就需要计算速度。如下:

(转)iOS开发下载文件速度计算

我用的是AFNetworking来做下载的,我们拿AFHTTPRequestOperation来举列,AFHTTPRequestOperation中有个方法:

- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block

这个方法读取导数据之后通过block回调。计算速度就是在这个block里面完成的。

需要定义一个下载对象:DownTask。DownTask需要有的属性:totalRead(一秒读取的数据)、speed(速度)、date(记录上一秒计算之后的时间)。注意:这里的一秒不是严格意义上的一秒,有可能大于一秒,我们计算的是平均速度,所以不会误差太大。

//计算一秒中的速度 downTask.totalRead += bytesRead; //获取当前时间 NSDate *currentDate = [NSDate date]; //当前时间和上一秒时间做对比,大于等于一秒就去计算 if ([currentDate timeIntervalSinceDate:downTask.date] >= 1) { //时间差 double time = [currentDate timeIntervalSinceDate:downTask.date]; //计算速度 long long speed = downTask.total/time; //把速度转成KB或M downTask.speed = [downTask formatByteCount:speed]; //维护变量,将计算过的清零 downTask.totalRead = 0.0; //维护变量,记录这次计算的时间 downTask.date = currentDate;

其中, downTask.speed = [downTask formatByteCount:speed];是用来将字节转化成我们需要的KB或M。用到的是:NSByteCountFormatter,具体实现如下:

- (NSString*)formatByteCount:(long long)size { return [NSByteCountFormatter stringFromByteCount:size countStyle:NSByteCountFormatterCountStyleFile]; }

这个方法是放在下载对象DownTask里面的。

iOSDevTip

转载于:https://www.cnblogs.com/devZhou/p/4872691.html

你可能感兴趣的文章
Linux内核分析——可执行程序的装载
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>
读《大道至简》第六章感想
查看>>
ef linq 中判断实体中是否包含某集合
查看>>
章三 链表
查看>>
Solution for Concurrent number of AOS' for this application exceeds the licensed number
查看>>
CSE 3100 Systems Programming
查看>>
IntelliJ IDEA 的Project structure说明
查看>>
Java Security(JCE基本概念)
查看>>
Linux Supervisor的安装与使用入门
查看>>
创建 PSO
查看>>
JasperReport报表设计4
查看>>
项目活动定义 概述
查看>>
团队冲刺04
查看>>
我的Python分析成长之路8
查看>>
泛型在三层中的应用
查看>>