第一個:RACTuple 元祖類
- RACTuple類似于數(shù)組NSArray
//元祖類 :類似于 數(shù)組
RACTuple * tuple = [RACTuple tupleWithObjectsFromArray:@[@"111",@"222",@"333"]];
NSString * str = tuple[1];
NSLog(@"%s == %@",__func__,str);
第二個:RACSequence 集合類
- RACSequence:用于代替NSArray,NSDictionary,可以快速的遍歷
- 最常見的應用常見:字典轉模型
代碼一:快速遍歷數(shù)組
//數(shù)組
NSArray * arr = @[@"abc",@"bcd",@123];
//RAC集合類
RACSequence * requence = arr.rac_sequence;
//遍歷
RACSignal * signal = requence.signal;
//訂閱信號
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"%s == %@",__func__,x);
}];
整合上述代碼
//數(shù)組
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) {
//宏 : 解析元祖
//宏里面的參數(shù) : 傳入需要解析出來的變量名稱
//右邊,放需要解析的元祖
RACTupleUnpack(NSString * key,NSString * value) = x;
NSLog(@"%@:%@",key,value);
if ([key isEqualToString:@"name"]) {
NSLog(@"Vaule == %@",value);
}
}];
顯示結果
代碼三:JSON數(shù)組快速轉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) {
//將對象進行逐個轉換谦絮,然后添加到對象數(shù)組中
KFC * kfc = [KFC kfcWithDict:x];
[arr addObject:kfc];
}];
代碼優(yōu)化:
NSArray * arr_1 = [[dicArr.rac_sequence map:^id _Nullable(id _Nullable value) {
return [KFC kfcWithDict:value];
}] array];
NSLog(@"%@",arr_1);