RACChannelTo(self, name) = RACChannelTo(self.model, name);RACChannelTo(self, blurb) = RACChannelTo(self.model, blurb);RACChannelTo(self, filmType, @(ASHRecipeFilmTypeColourNegative)) = RACChannelTo(self.model, filmType, @(ASHRecipeFilmTypeColourNegative));复制代码
这是一个双向绑定,self.name和self.model.name任何一个改变,另外一个也会改变。第三个参数是默认值,出现nil就用这个来代替。有了它,model和ViewModel就可以双向同步。
RACChannelTerminal *channelA = RACChannelTo(self, valueA); RACChannelTerminal *channelB = RACChannelTo(self, valueB); [[channelA map:^id(NSString *value) { if ([value isEqualToString:@"西"]) { return @"东"; } return value; }] subscribe:channelB]; [[channelB map:^id(NSString *value) { if ([value isEqualToString:@"左"]) { return @"右"; } return value; }] subscribe:channelA]; [[RACObserve(self, valueA) filter:^BOOL(id value) { return value ? YES : NO; }] subscribeNext:^(NSString* x) { NSLog(@"你向%@", x); }]; [[RACObserve(self, valueB) filter:^BOOL(id value) { return value ? YES : NO; }] subscribeNext:^(NSString* x) { NSLog(@"他向%@", x); }]; self.valueA = @"西"; self.valueB = @"左";复制代码