美文网首页SwiftIOS开发中的小知识点整理
利用Alamofire进行Swift断点下载

利用Alamofire进行Swift断点下载

作者: 河南蓝鸥科技有限公司 | 来源:发表于2016-06-01 13:13 被阅读1175次

一、介绍Alamofire

熟悉OC的同学们都知道AFNetworking。但是那是OC代码写的。今天介绍Alamofire是AFNetworking作者用Swift语言为我们写的一个第三方网络访问框架。即Alamofire就是Swift版的AFNetworking。今天就为同学们介绍一下Alamofire进行断点下载。

二、导入Alamofire。

用cocoapods导入是最方便的。由于Swift语言在不断的升级。我采用的是xcode7.3.1进行的编程,而Alamofire采用的是3.0

三、进入正式编码

在storyboard中,拖出两个button,分别是暂停下载和继续下载。在拖一个进度条,方便显示进度。如图:

storyboard

将两个button拖成方法,分别命名为stopDownLoad和continueDownLoad。进度条拖成属性,命名为progress。

两个按钮的方法

创建三个属性。分别为下载请求(downloadRequest),下载路径(destination),保存已经下载的数据(cancelledData)。下载路径是为了制定我们下载的文件在哪个路径下。保存已经下载的数据,是为了下次可以接着这次的下载。

在viewDidLoad中,现在开始进行下载,下载是利用Alamofire.download函数进行下载,有三个参数,分别为,请求方式、请求URL、下载的路径。

路径直接填写属性指定好的路径destination

同时还可以进行进度的检测,利用progress函数。有三个参数,分别是本次下载的大小。目前为止一共下载的大小。一共需要下载的大小。然后通过totalBytesRead / totalBytesExpectedRead就可以得到下载的进度了,值是0~1之间。然后给进度条赋值

刷新进度要回到主线程中进行刷新

还可以得到下载的结果。这里我们又定义了一个downloadResponse函数,当成response函数的参数。

downloadResponse函数如下

downloadResponse函数有四个参数。分别是,request: NSURLRequest?, response: NSHTTPURLResponse?, data: NSData?,error: NSError?。没有返回值。利用可选绑定,如果有错误,并且错误是NSURLErrorCancelled。记录一下已经下载的数据,为了进行下一次的下载。如果不是这个这个错误,那就说明,下载失败了。如果没有错误,就说明,下载成功,并且完成。

最后我们看一下两个按钮的点击方法。

暂停下载方法

在这里我们用了cancel()函数使得下载取消。这样的话,也就说明,如果点击了暂停下载,那么下载就出现了错误,并且错误为NSURLErrorCancelled。这也就是为什么上面那个downloadResponse函数的错误信息要写NSURLErrorCancelled了。

最后,继续下载的方法

利用func download(resumeData data: NSData, destination: Request.DownloadFileDestination) -> Request函数,进行继续下载。参数resumeData填写属性保存已经下载的部分就可以了。这样就可以进行断点下载了。

参考代码下载链接 http://pan.baidu.com/s/1bAlZjS

如果问题,请加QQ2912653129,备注写解决问题,和我单独沟通哦。

相关文章

网友评论

    本文标题:利用Alamofire进行Swift断点下载

    本文链接:https://www.haomeiwen.com/subject/idscdttx.html