美文网首页
RAC学习(三)- RACTuple & RACSe

RAC学习(三)- RACTuple & RACSe

作者: lionsom_lin | 来源:发表于2017-05-02 19:42 被阅读174次

    第一个:RACTuple 元祖类

    • RACTuple类似于数组NSArray
    //元祖类 :类似于 数组
        RACTuple * tuple = [RACTuple tupleWithObjectsFromArray:@[@"111",@"222",@"333"]];
        NSString * str = tuple[1];
        NSLog(@"%s == %@",__func__,str);
    

    第二个:RACSequence 集合类

    • RACSequence:用于代替NSArray,NSDictionary,可以快速的遍历
    • 最常见的应用常见:字典转模型

    代码一:快速遍历数组

    //数组
        NSArray * arr = @[@"abc",@"bcd",@123];
        //RAC集合类
        RACSequence * requence = arr.rac_sequence;
        //遍历
        RACSignal * signal = requence.signal;
        
        //订阅信号
        [signal subscribeNext:^(id  _Nullable x) {
            NSLog(@"%s == %@",__func__,x);
        }]; 
    

    整合上述代码

    //数组
        NSArray * arr = @[@"abc",@"bcd",@123];
       [arr.rac_sequence.signal subscribeNext:^(id  _Nullable x) {
            NSLog(@"%s == %@",__func__,x);
        }];
    
    输出结果显示

    代码二:解析NSDictionary

        //字典
        NSDictionary * dic = @{@"name":@"lionsom",@"age":@12};
        
        //字典转集合
        [dic.rac_sequence.signal subscribeNext:^(RACTuple* x) {
            //宏 : 解析元祖
            //宏里面的参数 : 传入需要解析出来的变量名称
            //右边,放需要解析的元祖
            RACTupleUnpack(NSString * key,NSString * value) = x;
          
            NSLog(@"%@:%@",key,value);
            
            if ([key isEqualToString:@"name"]) {
                NSLog(@"Vaule == %@",value);
            }
        }];
    
    显示结果

    代码三:JSON数组快速转Model对象

    //文件路径
        NSString * path = [[NSBundle mainBundle]pathForResource:@"kfc.plist" ofType:nil];
        
        NSArray * dicArr = [NSArray arrayWithContentsOfFile:path];
        
        NSMutableArray * arr = [NSMutableArray array];
        
        [dicArr.rac_sequence.signal subscribeNext:^(id  _Nullable x) {
            //将对象进行逐个转换,然后添加到对象数组中
            KFC * kfc = [KFC kfcWithDict:x];
            [arr addObject:kfc];
        }];
    

    代码优化:

        NSArray * arr_1 = [[dicArr.rac_sequence map:^id _Nullable(id  _Nullable value) {
            return [KFC kfcWithDict:value];
        }] array];
        
        NSLog(@"%@",arr_1);
    

    相关文章

      网友评论

          本文标题:RAC学习(三)- RACTuple & RACSe

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