iOS - RxSwift 项目实战记录

本文详细介绍了如何在iOS项目中使用RxSwift,包括结合Moya进行网络请求,利用RxDataSources优雅地管理tableView数据源,以及在MVVM架构下规范ViewModel的实现。还展示了如何在RxSwift中集成MJRefresh实现下拉刷新功能。
摘要由CSDN通过智能技术生成

ReactiveX

最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。),而恰巧RxSwift已经出来有一些时间了,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~

Exhibition

结构

.
├── 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 {
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值