iOS开发下载文件速度计算

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

我用的是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。具体实现如下:

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

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

以上就是我计算下载速度的方法。希望能给你带来帮助。

iOS开发(微信号 iOSDevTip)

主要用于召集iOS开发者参与技术讨论,整理iOS、swift开发技巧,分享创业经验,发布移动互联网相关资讯,向企业推荐iOS开发人才。

时间: 2024-11-12 03:16:51

iOS开发下载文件速度计算的相关文章

iOS开发中文件的上传和下载功能的基本实现-备用

感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: 复制代码代码如下: YYViewController.m#import "YYViewController.h" #define YYEnc

IOS开发之文件上传

IOS开发之文件上传 在移动应用开发  文件形式上传是必不可少的,最近把IOS这块文件上传文件代码简单的整理一下,如果大家有需要安卓这边的代码,本人也可以分享给大家!QQ群:74432915  欢迎大家一起探讨 首先本demo采用网上开源框架 AFNetworking  源码:http://download.csdn.net/detail/wangliang198901/7809439 将整个框架导入IOS新建立的工程中 在FKAppDelegate.h声明 如下: #import <UIKit

李洪强漫谈iOS开发[C语言-041]-计算月份天数

李洪强漫谈iOS开发[C语言-041]-计算月份天数 

iOS开发 plist文件的操作

iOS开发 plist文件操作 浏览:6287 | 更新:2015-02-05 19:57 1 2 3 4 5 分步阅读 iOS开发常用数据存储方式有:NSKeyedArchiver.NSUserDefaults.Write写入方式.SQLite.为了简洁明了的存储和可视化展现数据,以文件形式存储数据是很有必要的.plist文件在iOS开发中属于Write写入方式,可以以Property List列表形式显示,也可以以xml格式显示.对于数据管理是很方便的.掌握使用plist文件数据操作很有必要

iOS开发之文件(分段)下载

1.HTTP HEAD方法 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:kTimeout]; request.HTTPMethod = @"HEAD"; [NSURLConnection sendAsynchronousRequest:request queue:self.myQueue completionHandler:^(N

IOS开发之文件压缩和解压缩

前言: QQ表情包就用到了解压缩,从网络下载的那么多表情文件格式并不是一个一个图片文件,而是多个图片压缩而成的表情压缩包.下面介绍的是iOS开发中会用到的压缩和解压缩的第三方框架的使用. 注意: 这个第三方框架代码文件夹是SSZipArchive,使用cocoapods搜索也是搜索SSZipArchive.但是如果你在github上直接搜索ZipArchive,搜到点赞数最多,维护频繁的ZipArchive库,然后下载代码,其实就是这个SSZipArchive. 第三方框架github网址:ht

iOS开发——下载器的功能基本实现

今天,做了一个下载器的Demo,即从本地配置的Apache服务器上,下载指定的文件.这次,我们下载服务器根目录下的html.mp4文件. 按照惯例,我们先创建一个URL对象和请求. NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/html.mp4"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; 这里有两点需要注意,第一,这个url的字符串是全英文的,如果

iOS 开发 Pch 文件的正确使用

在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问.是一个预编译文件. 首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部的头文件(整个项目中都用得上的头文件) 3.能自动打开或者关闭日志输出功能 虽 然用了很久的Xcode6但是项目是xcode5之前创建好的,所以一开始并没有发现缺少了这个pc

iOS开发——pch文件添加和使用

添加pch文件 Xcode6之后不会自动创建-Prefix.pch文件到你的工程里,所以我们想使用pch文件的话得自己手动导入,下面就介绍下如何手动添加pch文件到工程目录中去. (1)打开你已经存在的XCODE工程. 选择 File > New > File > iOS > Other > PCH File 然后点击下一步. (2)给你的PCH文件起名字projectName-Prefix.pch. 例如你的项目工程名为smallDemo然而你的PCH 文件的名字应该为 s