MVVM模式初体验(使用ReactiveCocoa获取网络数据)

使用RAC也有一段时间了,由于此前的项目都是使用的MVC模式,网络请求都封装在固定的模块中,抽取出来十分不方便,所以到目前为止并没有涉及到使用RAC去做获取网络请求的情景。
近期,着手重构目前手上的项目,准备给臃肿的Controller瘦身,MVVM貌似是一个不错的选择(既然使用了RAC,那为什么不使用MVVM呢?)。于是,开始上手体验MVVM模式和RAC的结合使用(RAC的基础知识在这就不介绍了,百度一下,一大推老司机都有分享)。不用不知道,一用才发现RAC和MVVM简直是绝配啊,那体验真是改变了我对编程的传统观念(函数响应式编程真心好用)。
这里用一个小demo来举例:
进入页面加载数据显示。这里使用我当前项目中的一个接口来模拟数据。既然是MVVM,那Model和ViewModel肯定是少不了的。如下:我们新建一个ViewModel叫LoadStoreViewModel(因为这里是加载商店数据),传统的MVC模式中,网络请求都是在ViewController中完成的,这里我们把网络请求封装到对应的ViewModel中去,能够有效的减少ViewController的负担,降低耦合性。
LoadStoreViewModel主要有三个属性:statues(网络加载状态),code1(编号),以及保存数据的数组dataArry,还有一个加载数据信号loadDataSignal;
初始化loadDataSignal:(主要进行网络请求)

//
- (RACSignal *)loadDataSignal{
    if (_loadDataSignal==nil) {
        AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
        manager.requestSerializer=[[AFJSONRequestSerializer alloc]init];
        NSDictionary *params=@{
  @"code1":@"MWG08A09"};
        _loadDataSignal=[manager rac_GET:kLoadURL parameters:params];
    }
    return _loadDataSignal;
}

调用loadDataSignal处理网络请求结果:


-(void)initWithSubscrible{
    [[self.loadDataSignal</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值