2

我一直在使用 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但我只有一个信号,并且减少和映射抛出错误。

你会如何组织这个?

4

1 回答 1

2

答案是使用map:

RAC(self.label.visible) = [matchStatus map:^(NSNumber*status) {
    return @(status.intValue == MatchStatusStarted);
}]; 
于 2013-08-24T14:13:15.487 回答