ReactiveCocoa将单个信号转换为值

时间:2013-08-24 13:43:29

标签: ios objective-c key-value-observing reactive-programming reactive-cocoa

我一直在使用ReactiveCocoa,但我一直这样做:

// Assume match.status is an enum
[RACAble(self.match.status) subscribeNext:^(NSNumber * matchStatusNum) {
    // sets self.background.color and self.label.visible
    [wself renderMatchStatus:matchStatusNum.intValue];
}];

但似乎直接绑定到我关心的东西会更好。更像这样:

RACSignal * matchStatus = RACAble(self.match.status);

RAC(self.background, color) = [matchStatus ???]; // expects a UIColor
RAC(self.label, visible) = [matchStatus ???]; // expects a BOOL

如何将信号转换为不同的东西?所有示例都使用combineLatest:reduce,但我只有一个信号,并减少和映射抛出错误。

你会如何组织这个?

1 个答案:

答案 0 :(得分:2)

答案是使用map:

RAC(self.label.visible) = [matchStatus map:^(NSNumber*status) {
    return @(status.intValue == MatchStatusStarted);
}];