美文网首页
RAC在实际开发中的运用

RAC在实际开发中的运用

作者: 考槃在涧 | 来源:发表于2017-11-28 16:41 被阅读15次
    RAC+MVVM在目前代码中的运用:

    阅读目前项目的代码的总结,这里只进行一些简单的主要逻辑上的介绍。

    • 每个ViewController``ViewModel``Model都有自己的一个基类,首先从ViewModel中开始说起:

      • 有一个RACCommand,一个RACSignal,一个dataArray给ViewController提供数据。

    RACCommand的逻辑:

    - (RACCommand *)command{
        if (!_command) {
            _command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
               // 这里进行判断,首先判断pageNum略过
                // 需要返回一个RACSignal 这里返回的是ViewModel自己的 requestListDataSignal
                // 然后过滤信号,这里做了一个判断检测是不是需要的model类型 如果是就继续
                return [[self.requestListDataSignal filter:^BOOL(id value) {
                    return [value isKindOfClass:[ZCModel class]];
                }] doNext:^(ZCModel * x) {
                    // 如果是需要的model类型 在这里将数据添加进来
                    [self.dataArray addObject:x];
                }];
            }];
        }
        return _command;
    }
    

    RACSignal的逻辑:

    - (RACSignal *)requestListDataSignal{
        /* 这个signal 在baseViewModel中先置空,在需要的地方重写
         return [WYMTCConsultCommonService historyOrderListWithParams:self.orderParams];
         这个方法在Service里实现,进行数据请求,并将需要转换为model 的数据用map映射为model
         */
        if (!_requestListDataSignal) {
            _requestListDataSignal = [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
                [subscriber sendNext:@"请求到的数据"];
                [subscriber sendCompleted];
                return [RACDisposable disposableWithBlock:^{
                    // 数据请求完毕,取消task
                }];
            }] map:^ZCModel *(NSString * value) {
                // 把请求到的数据映射为model
                ZCModel * model = [[ZCModel alloc] init];
                model.name = value;
                model.detail = @"你说吧";
                return model;
            }];
        }
        return _requestListDataSignal;
    }
    
    • ViewController也有自己的基类,在基类的viewDidLoad方法中调用[self.viewModel.command execute:@1];使得页面加载完成后开启RAC请求数据。

    好吧,暂时就这些

    相关文章

      网友评论

          本文标题:RAC在实际开发中的运用

          本文链接:https://www.haomeiwen.com/subject/hujebxtx.html