网络下载是作为一个iOS程序必须懂得的技术.虽然已经有大牛封装非常好用的下载sdk,功能也非常强大,并且基本上你都不用怎么在添加新的功能就可以直接使用.非常方便.
但是有个问题,如果我们直接使用他们的sdk,一旦他们放弃了跟新,或者说,我们要换一个比这个更好用的sdk,那么问题就来了,你需要把你所写的下载代码全部换掉,如果是个小工程,还不算什么事,如果大工程,那么你就麻烦了.需要一个一个的改,多坑啊...我代表宝宝受不了
不过不要紧,下面我们来封装一下,第三方下载的sdk.第三方下载的sdk,有很多,就拿almofire举例子了,
1.首先下载almofire,这个自己google吧....好吧这里有链接.Almofire
2.创建自己的封装类HttpRequestOperation
3.实例化分装类
下面一步一步的讲解.
1.下载Almofire
这个在GitHub上已经有了,可以直接下载,并且上边也有说明,具体的就看他们的说明文档,如果你仔细看的话,他也是不建议直接使用,而是也需要你封装一下的.
2.创建自己的封装类HttpRequestOperation
这个使用swift写的,我就直接用swift代码讲解了.首先需要定义一个下载的管理类,Manger 实例 manager,因为它是一个单例类,所以只需要使用这个实例就可以了.
然后需要定义一个结束的回调的方法,
<span style="font-size:18px;"> typealias finishedTask = (data: AnyObject?,success: Bool) -> Void
</span>
这个是在下载结束后回调的方法,还需要一个URLString.下载的地址,我建议定义成字符串类型,在真正使用的时候在转换成URL类型.
下面就是下载方法:
func main() {
let url = NSURLRequest(URL: NSURL(string: stringURL)!);
let request = manager.request(url);
requestNet = request;
request.response { (reqs, respose, data, error) in
dispatch_async(dispatch_get_main_queue(), {
guard let tempData = data else {
self.finiTask(data:<span style="font-family: Arial, Helvetica, sans-serif;">error</span>,success: false);
return;
}
self.finiTask(data: tempData,success: true);
})
}
request.resume();
}
上面的很简单,没有什么太难的,有一点需要注意一下,就是结束回调的方法self.finiTask(),一定不能为空,否则会出问题.
3,实例化分装类
最好不要直接这样使用,应为也有很多麻烦事,最好在继承这个类,然后在使用,那么这么简单就已经封装好了.
总结:
上边写的很简单,但是也有很多地方要注意,最主要的还是上边的函数,基本上已经够用的,他的方便之处是,如果以后要换下载第三方的sdk ,那么你直接把main()函数操作换掉即可,哦太好了,只需要一个方法技能,就能解决所有的问题,是不是有点小激动.哈哈,好吧,好东西总是要分享的.
温馨提示:
如果有不明白之处或者想要源码.我都可以提供给你.你只需要留言,并留下联系方式,我就发给你.如果大家注意到标题,会发现有个一,那就说明还会有二,嘿嘿,希望继续关注我的博客,我会继续为大家讲解里边的小秘密的.