对于一个 iOS 项目,在搭建项目的时候,使用的架构为 MVVM 架构,需要考虑的有以下几点:
数据模型
网络请求
缓存
代码架构 - MVVM
图片加载
工具类
单元测试
一、MVVM架构之RxSwift
首先说一下框架,目前比较流行的是MVVM架构,在OC里,我们用的是ReactiveCocoa这个,想必这个使用的人比较多,大家也比较熟悉。在swift里用的是RxSwift这个,RxSwift就是ReactiveCocoa的swift版。
二、网络请求
对于使用Objective-C的开发者,一定非常熟悉AFNetworking这个网络框架。在苹果推出的Swift之后,AFNetworking的作者专门用Swift来编写一个类似AFNetworking的网络框架,称为Alamofire。Alamofire地址 >>
三、数据模型转换
在OC中,我们有很多优秀的第三方库帮助我们实现,比如MJExtension、JSONModel等,这些库基本都是利用runtime实现读取属性名并利用kvc重新赋值属性。
在Swift中,由于runtime的局限,比较出名的有SwiftyJSON、ObjectMapper等。
那么,今天的主角 HandyJSON就出现了,这个库是阿里一位大神推出的,能够做到JSON转Model一步到位,而且使用起来,非常简洁方便。
关于HandyJSON原理:
摘自网上一段说明如下:
HandyJSON另辟蹊径,采用Swift反射+内存赋值的方式来构造Model实例,保持原汁原味的Swift类定义。
四、网络层的进一步封装
一般我们会在项目中添加一个网络请求层,来管理网络请求,一般会叫APIManager或者NetworkModel,但是这样子还是会有一点不好:
这一层比较混乱,不好管理,混合了各种请求
不好做单元测试
但是Moya是专业处理这些问题而生滴。Moya有以下优点:
定义了一个清晰的网络结构
更加简单地进行网络单元测试
Moya是作用在Alamofire之上,让我们不再直接去使用Alamofire了,Moya也就可以看做我们的网络管理层,只不过他拥有更好更清晰的网络管理。可以看到下图,我们的APP直接操作Moya,让Moya去管理请求,不在跟Alamofire进行接触
网友评论