RAC中集合的操作

RACTuple
RACSequence
map:
flattenMap:
Model解析

RACSequence遍历数组

NSArray *array01 = @[@1,@2, @3, @4];
[array01.rac_sequence.signal subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
}];

RACSequence遍历字典

// 遍历出来的键值对包装成了RACTuple(元组对象)
NSDictionary *dict01 = @{@”name”:@”dy”, @”age”: @28};
[dict01.rac_sequence.signal subscribeNext:^(id _Nullable x) {
// 解包元组,会把元组的值,按顺序给参数里面的变量赋值
RACTupleUnpack(NSString *key, NSString *value) = x;
NSLog(@”key = %@; value = %@”, key, value);
}];

map:

// 创建信号
RACSubject *subject = [RACSubject subject];
// 绑定信号
RACSignal *bindSignal = [subject map:^id _Nullable(id _Nullable value) {
// 获取的数据,value
// NSLog(@”–> %@”, value);
// 返回的类型,就是你需要映射的值
return [NSString stringWithFormat:@”key:%@”, value];
}];
// 订阅绑定信号
[bindSignal subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
}];
// 发送
[subject sendNext:@”321”];
[subject sendNext:@”555”];
[subject sendNext:@”999”];

flattenMap:

// 创建信号
RACSubject *signal = [RACSubject subject];
// 绑定信号
RACSignal bindSignal = [signal flattenMap:^__kindof RACSignal _Nullable(id _Nullable value) {
NSString *didValue = [NSString stringWithFormat:@”key:%@”, value];
return [RACReturnSignal return:didValue];
}];
// 订阅信号
[bindSignal subscribeNext:^(id _Nullable x) {
NSLog(@”订阅绑定数据:%@”, x);
}];
// 发送数据
[signal sendNext:@”value”];

Model解析:

NSMutableArray *arr = [NSMutableArray array];
NSString *path = [[NSBundle mainBundle] pathForResource:@”flag.plist” ofType:nil];
NSArray *valueArr = [NSArray arrayWithContentsOfFile:path];
// 第一种,先遍历出每个数据,将数据转换成model
[valueArr.rac_sequence.signal subscribeNext:^(NSDictionary * x) {
WDYFlag *flag = [WDYFlag flagWithDictionary:x];
[arr addObject:flag];
}];
// 第二种:高级用法,使用map直接转换为字典类型数据
NSArray result = [[valueArr.rac_sequence map:^id _Nullable(NSDictionary value) {
return [WDYFlag flagWithDictionary:value];
}] array];

数据类型:

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *icon;
+(instancetype)flagWithDictionary:(NSDictionary *)dict;


+(instancetype)flagWithDictionary:(NSDictionary *)dict{
WDYFlag *flag = [[self alloc] init];
[flag setValuesForKeysWithDictionary:dict];
return flag;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值