gpt4 book ai didi

objective-c - 我应该在 ReactiveCocoa MVVM 中重新绑定(bind)模型吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:15 25 4
gpt4 key购买 nike

我已经开始设置我的 View 模型,以便它们自动解除绑定(bind)/绑定(bind)到它们所代表的任何模型。

我对 ReactiveCocoa 比较陌生,想知道我正在做的事情是好是坏,或者是否有更好的方法。

例如,如果我有一个表示电影模型的 View 模型,我会这样设置它:

-(void)bind{
[RACObserve(self, movieModel) subscribeNext:^(id x) {
[self unbindMovieModel];
[self bindMovieModel];
}];
}

-(void)unbindMovieModel{}
-(void)bindMovieModel{
self.titleSignal = [RACObserve(self.movieModel, title)
takeUntil:[self rac_signalForSelector:@selector(unbindMovieModel)];

self.averageRatingSignal = [[self.movieModel currAverageRating]
takeUntil:[self rac_signalForSelector:@selector(unbindMovieModel)];

//Setup some more complex signals, etc...
}

现在,如果我在任何时候这样做:

self.movieModel = newModel;

View 模型将与旧的 movieModel 解除绑定(bind)并将其自身绑定(bind)到 newModel。

有没有更好的方法?这不是“ react 性”吗?非常感谢任何反馈。

最佳答案

您可以通过将 movieModelRACObserve 宏的静态部分移动到动态部分来大大简化这种情况:

RAC(self.titleLabel, text) = RACObserve(self, movieModel.title);

然后,当模型实例被交换时以及模型实例本身发生变化时,您的 View 都会更新。

如果您的 View 模型本身包含信号,您可以执行以下操作:

RAC(self.ratingLabel, text) = [[RACObserve(self, movieModel) map:^(id viewModel) {
return viewModel.currAverageRating;
}] switchToLatest];

关于objective-c - 我应该在 ReactiveCocoa MVVM 中重新绑定(bind)模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com