可以将字节转化为我们需要的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相关推荐

  1. 使用 NSURLSession 开发一个支持后台下载和断点续传的下载工具

    NSURLSession 是 iOS 系统提供给我们的原生网络操作库,它提供了网络操作相关的一系列特性支持,比如缓存控制,Cookie管理,HTTP 认证处理等等,是一套整体的网络操作处理解决方案. ...

  2. iOS 8 新特性介绍

    来源:nshipster.cn 发布时间:2014-07-06 阅读次数:2152 随便去问任何人,他们都会告诉你WWDC2014是近年来最为激动的回忆. 整个大会没有发布任何新硬件,它是一次史无前例 ...

  3. 雏鸟(1)--Foundation

    一.Foundation.framework目录     1.    IOS目录       $1   /Applications/Xcode.app/Contents/Developer/Platf ...

  4. iOS文件(沙盒目录,文件创建、移动、复制等)

    目录获取 获取沙盒的主目录路径: + (NSString *)homeDir {return NSHomeDirectory(); } 复制代码 获取沙盒中Documents的目录路径: + (NSS ...

  5. iOS8的一些好玩的升级

    一.NSProcessInfo - (BOOL) isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version: 对于判断手机等设 ...

  6. iOS小技巧总结,绝对有你想要的(持续更新)

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView a ...

  7. 【转】常用常忘的iOS知识点搜集

    原帖地址: iOS小技巧总结,绝对有你想要的 原作者:iOS_小松哥 十分拜服!这里先手抄一份,会陆续把自己整理的知识点也加进来. iOS开发中常遇到小的知识点,常用常忘,特此集中记录以备查阅. 1. ...

  8. ios常用的格式化代码工具

    1.NSByteCountFormatter 计算(格式化)文件的大小 我们很多时候需要计算文件的大小,我看到很多人使用操蛋的公式,好吧!其实Apple官方提供了一套牛逼的API,这个API是将 ** ...

最新文章

  1. 83篇文献、万字总结开启你的强化学习之路!
  2. BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
  3. Autodesk MotionBuilder 2020中文版
  4. 从互联网的旁观者,转为互联网的建设者,推动者!!!
  5. SAP CRM One Order框架里旧式的索引表设计原理
  6. 如何捕获 EF 生成的 SQL 脚本?
  7. SilverLight明日起通过微软更新推送
  8. smartgit 安装
  9. 微信小程序之 ----组件
  10. 计算机课网络连不了,上网课电脑没有摄像头怎么办
  11. 计算机相关论文摘要,计算机类论文摘要
  12. MATLAB读取10bit的raw格式图片代码
  13. 阿里云服务器的搭建和部署(小白教程)
  14. 看小伙如何跟反爬抗争到底
  15. 如何区分前后端bug
  16. rebase操作使用方法
  17. Cache poisoning
  18. 教程:晶莹剔透的水滴绘制过程
  19. unity地形模块学习
  20. Unable to preventDefault inside passive event listener due to target being treated as passive.

热门文章

  1. 数据结构:分块-区间加法、区间乘法和单点查询
  2. 织梦CMS调用文章列表时,怎么显示短时间格式
  3. 高等代数中的名词解析-No1
  4. Spring AOP的简单示例
  5. Sql Server和oracle的函数区别总结
  6. Mybatis自学日志02
  7. maven+Spring boot 打包发布运行
  8. 记一次“Shiro+任务调度”开发过程中出现UnavailableSecurityManagerException解决思路
  9. 二叉树前序,中序,后序遍历的迭代实现,实现思路及代码
  10. boot sprint 项目结构_Spring Boot 项目结构