最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~
结构
.
├── Controller
│ └── LXFViewController.swift // 主视图控制器
├── Extension
│ └── Response+ObjectMapper.swift // Response分类,Moya请求完进行Json转模型或模型数组
├── Model
│ └── LXFModel.swift // 模型
├── Protocol
│ └── LXFViewModelType.swift // 定义了模型协议
├── Tool
│ ├── LXFNetworkTool.swift // 封装Moya请求
│ └── LXFProgressHUD.swift // 封装的HUD
├── View
│ ├── LXFViewCell.swift // 自定义cell
│ └── LXFViewCell.xib // cell的xib文件
└── ViewModel
└── LXFViewModel.swift // 视图模型
第三方库
RxSwift // 想玩RxSwift的必备库
RxCocoa // 对 UIKit Foundation 进行 Rx 化
NSObject+Rx // 为我们提供 rx_disposeBag
Moya/RxSwift // 为RxSwift专用提供,对Alamofire进行封装的一个网络请求库
ObjectMapper // Json转模型之必备良品
RxDataSources // 帮助我们优雅的使用tableView的数据源方法
Then // 提供快速初始化的语法糖
Kingfisher // 图片加载库
SnapKit // 视图约束库
Reusable // 帮助我们优雅的使用自定义cell和view,不再出现Optional
MJRefresh // 上拉加载、下拉刷新的库
SVProgressHUD // 简单易用的HUD
敲黑板
Moya的使用
Moya是基于Alamofire的网络请求库,这里我使用了Moya/Swift,它在Moya的基础上添加了对RxSwift的接口支持。接下来我们来说下Moya的使用
一、创建一个枚举,用来存放请求类型,这里我顺便设置相应的路径,等下统一取出来直接赋值即可
enum LXFNetworkTool {
enum LXFNetworkCategory: String {
case all = "all"
case android = "Android"
case ios = "iOS"
case welfare = "福利"
}
case data(type: LXFNetworkCategory, size:Int, index:Int)
}
二、为这个枚举写一个扩展,并遵循塄 TargetType,这个协议的Moya这个库规定的协议,可以按住Commond键+单击左键进入相应的文件进行查看
extension LXFNetworkTool: TargetType {
/// baseURL 统一基本的URL
var baseURL: URL {