我一直在使用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
,但我只有一个信号,并减少和映射抛出错误。
你会如何组织这个?
答案 0 :(得分:2)
答案是使用map:
RAC(self.label.visible) = [matchStatus map:^(NSNumber*status) {
return @(status.intValue == MatchStatusStarted);
}];