我正在尝试实现ViewModel。
我想将ViewModel绑定到Model(RealmObject)。
我使用Reactive Cocoa(2.5)将ViewModel绑定到Model。
类似的东西:
RAC(self, name) = RACObserve(self, boundedProfile.name);
RAC(self, pictureUrl) = RACObserve(self, boundedProfile.pictureUrl);
RAC(self, birthday) = RACObserve(self, boundedProfile.birthdate);
我的问题是,如果稍后我删除该配置文件并使其失效,会发生什么?我应该删除所有观察员吗?我可以用ReactiveCocoa吗?
我正在使用ReactiveCocoa和Realm的Objective-C版本。
答案 0 :(得分:1)
我认为RLMObject.invalidated
属性符合KVO。因此,如果您希望在配置文件失效后中断订阅,则可以执行以下操作:
RACSignal *invalidationSignal = [[RACObserve(self, boundedProfile.invalidated)
filter:^BOOL(BOOL invalid) {
return invalid == true; // We're only interested in the cases where it was invalidated.
}]
replayLast]; // For multicasting the same value for all subscribers.
RAC(self, name) = [RACObserve(self, boundedProfile.name)
takeUntil:invalidationSignal]; // Once a value passes here, the subscription breaks.
RAC(self, pictureUrl) = [RACObserve(self, boundedProfile.pictureUrl)
takeUntil:invalidationSignal];
RAC(self, birthday) = [RACObserve(self, boundedProfile.birthdate)
takeUntil:invalidationSignal];
我建议不要直接在ViewModel中使用你的数据库模型,并将它们映射到其他模型只用于表示,这样就可以更容易地处理这种情况。