考虑ReactiveCocoa Introduction中的一个例子(释义)
根据{{1}}和.password
文本字段是否匹配启用
.passwordConfirm
这里我们知道在编译时我们要合并多少和什么东西,和将“combine”数组解构/映射到reduce块的多个参数是有用的。什么时候不起作用。例如,如果你想:
RAC(self.enabled) = [RACSignal
combineLatest:@[ RACAble(self.password), RACAble(self.passwordConfirm) ]
reduce:^(NSString *password, NSString *passwordConfirm) {
return @([passwordConfirm isEqualToString:password]);
}];
如何使用ReactiveCocoa完成此操作?
更新:接受的答案的评论有助于解释我所遗漏的内容。
答案 0 :(得分:7)
您可以使用地图:
RAC(self.enabled) = [[RACSignal combineLatest:arrayOfSignals]
map:^(RACTuple *signalValues) {
// something
}
];
RACTuple
可以通过多种方式进行操作,它符合NSFastEnumeration
,具有allObjects
方法和rac_sequence
方法。例如,您可以通过以下方式组合所有布尔值:
RAC(self.enabled) = [[RACSignal combineLatest:arrayOfSignals]
map:^(RACTuple *signalValues) {
return @([signalValues.rac_sequence all:^BOOL(NSNumber *value) {
return [value boolValue];
}]);
}
];
希望它有所帮助。