我在 ParentViewModel 上有一个方法,它返回 ViewModel 对象的 RACSequence,如下所示:
- (RACSequence *) viewModels
{
return [self.models.rac_sequence map:^id(Model *model) {
return [[ViewModel alloc] initWithModel: model];
}];
}
每个 ViewModel 都有一个 state 属性,该属性是一个枚举,并具有 3 个状态:NotStarted、InProgress 和 Completed。当我序列中的所有 ViewModel 都具有 Completed 状态时,我知道 ParentViewModel 是有效的。我在 ParentViewModel 上有一个 validSignal,我想从 viewModels 序列中得出有效的事实。目前我有这个代码:
BOOL valid = [[self viewModels] all:^BOOL(ViewModel *vm) {
return vm.state == Completed;
}];
如果序列中的所有 ViewModel 都有效,这给了我一个指标。然后我怎样才能把它变成一个 RACSignal,它会在每次 ViewModel 上的 state 属性发生变化时更新?