在我目前的情况下,我可以这样做:
[isFooSignal subscribeNext:^(NSNumber *isFoo) {
[isBarSignal subscribeNext:^(NSNumber *isBar) {
if ([isFoo boolValue]) {
if ([isBar boolValue]){
// isFoo and isBar are both true
}
else {
// isFoo is true and isBar is false
}
}
}];
}];
但理想情况下,我认为我想订阅这两个信号,并能够访问它们的最新值,无论哪个先发生变化。
类似的东西:
...^(NSNumber *isFoo, NSNumber *isBar) {
NSLog(@"isFoo: %@" isFoo);
NSLog(@"isBar: %@", isBar);
}];
如何使用ReactiveCocoa实现此目的?
答案 0 :(得分:1)
您可以使用+combineLatest:reduce:
执行此操作:
[[RACSignal
combineLatest:@[ isFooSignal, isBarSignal ]
reduce:^(NSNumber *isFoo, NSNumber *isBar) {
return @(isFoo.boolValue && isBar.boolValue);
}]
subscribeNext:^(NSNumber *isBoth) {
NSLog(@"both true? %@", isBoth);
}];