NSByteCountFormatter
可以将字节转化为我们需要的Kb或者m
+ (NSString *)stringFromByteCount:(long long)byteCount countStyle:(NSByteCountFormatterCountStyle)countStyle;
可以实现下载功能
我用的是AFNetworking来做下载的,我们拿AFHTTPRequestOperation来举列,AFHTTPRequestOperation中有个方法:
- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block
这个方法读取导数据之后通过block回调。计算速度就是在这个block里面完成的。
需要定义一个下载对象:DownTask。DownTask需要有的属性:totalRead(一秒读取的数据)、speed(速度)、date(记录上一秒计算之后的时间)。注意:这里的一秒不是严格意义上的一秒,有可能大于一秒,我们计算的是平均速度,所以不会误差太大。
下载中代码:
//模拟af下载进度 - (void)downloadProgressbytesRead:(NSUInteger)bytesRead totalBytesRead:(long)totalBytesRead totalBytesExpectedToRead:(long)totalBytesExpectedToRead {//这里应该是在请求的时候初始化,下载中进行变量的改变,注意要写在外面哦DownTask *down = [[DownTask alloc]init];//计算一秒中的数据down.totalRead += bytesRead;//获取当前时间NSDate *currentDate = [NSDate date];//当前时间和上一秒时间做对比,大于等于一秒就去计算if ([currentDate timeIntervalSinceDate:down.date] >= 1) {//时间差double time = [currentDate timeIntervalSinceDate:down.date];//计算速度long long speed = down.totalRead/time;//把速度转成KB或Mdown.speed = [down formatByteCount:speed];//维护变量,将计算过的清零down.totalRead = 0.0;//维护变量,记录这次计算的时间down.date = currentDate;} }
DownTask代码:
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface DownTask : NSObject@property (nonatomic,assign)NSUInteger totalRead;//一秒读取的数据 @property (nonatomic,copy)NSString *speed;//速度 @property (nonatomic,strong)NSDate *date;//记录上一秒计算之后的时间- (NSString*)formatByteCount:(long long)size;@end
#import "DownTask.h"@implementation DownTask- (NSString*)formatByteCount:(long long)size {return [NSByteCountFormatter stringFromByteCount:size countStyle:NSByteCountFormatterCountStyleFile]; }@end
转载于:https://www.cnblogs.com/hxwj/p/5388124.html
NSByteCountFormatter相关推荐
- 使用 NSURLSession 开发一个支持后台下载和断点续传的下载工具
NSURLSession 是 iOS 系统提供给我们的原生网络操作库,它提供了网络操作相关的一系列特性支持,比如缓存控制,Cookie管理,HTTP 认证处理等等,是一套整体的网络操作处理解决方案. ...
- iOS 8 新特性介绍
来源:nshipster.cn 发布时间:2014-07-06 阅读次数:2152 随便去问任何人,他们都会告诉你WWDC2014是近年来最为激动的回忆. 整个大会没有发布任何新硬件,它是一次史无前例 ...
- 雏鸟(1)--Foundation
一.Foundation.framework目录 1. IOS目录 $1 /Applications/Xcode.app/Contents/Developer/Platf ...
- iOS文件(沙盒目录,文件创建、移动、复制等)
目录获取 获取沙盒的主目录路径: + (NSString *)homeDir {return NSHomeDirectory(); } 复制代码 获取沙盒中Documents的目录路径: + (NSS ...
- iOS8的一些好玩的升级
一.NSProcessInfo - (BOOL) isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version: 对于判断手机等设 ...
- iOS小技巧总结,绝对有你想要的(持续更新)
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView a ...
- 【转】常用常忘的iOS知识点搜集
原帖地址: iOS小技巧总结,绝对有你想要的 原作者:iOS_小松哥 十分拜服!这里先手抄一份,会陆续把自己整理的知识点也加进来. iOS开发中常遇到小的知识点,常用常忘,特此集中记录以备查阅. 1. ...
- ios常用的格式化代码工具
1.NSByteCountFormatter 计算(格式化)文件的大小 我们很多时候需要计算文件的大小,我看到很多人使用操蛋的公式,好吧!其实Apple官方提供了一套牛逼的API,这个API是将 ** ...
最新文章
- 83篇文献、万字总结开启你的强化学习之路!
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
- Autodesk MotionBuilder 2020中文版
- 从互联网的旁观者,转为互联网的建设者,推动者!!!
- SAP CRM One Order框架里旧式的索引表设计原理
- 如何捕获 EF 生成的 SQL 脚本?
- SilverLight明日起通过微软更新推送
- smartgit 安装
- 微信小程序之 ----组件
- 计算机课网络连不了,上网课电脑没有摄像头怎么办
- 计算机相关论文摘要,计算机类论文摘要
- MATLAB读取10bit的raw格式图片代码
- 阿里云服务器的搭建和部署(小白教程)
- 看小伙如何跟反爬抗争到底
- 如何区分前后端bug
- rebase操作使用方法
- Cache poisoning
- 教程:晶莹剔透的水滴绘制过程
- unity地形模块学习
- Unable to preventDefault inside passive event listener due to target being treated as passive.
热门文章
- 数据结构:分块-区间加法、区间乘法和单点查询
- 织梦CMS调用文章列表时,怎么显示短时间格式
- 高等代数中的名词解析-No1
- Spring AOP的简单示例
- Sql Server和oracle的函数区别总结
- Mybatis自学日志02
- maven+Spring boot 打包发布运行
- 记一次“Shiro+任务调度”开发过程中出现UnavailableSecurityManagerException解决思路
- 二叉树前序,中序,后序遍历的迭代实现,实现思路及代码
- boot sprint 项目结构_Spring Boot 项目结构