假设我有一个与他的ViewModel绑定的视图,如下所示:
查看:
RAC(self.lbl, userName) = RACObserve(self.viewModel.user, userName);
这会很棒!但是当我加载一个新的User实例并将其设置为这样的情况时会发生什么:
视图模型:
-(void) userUpdated: (User *) user {
self.user = user;
}
在这种情况下,视图绑定仍将绑定到旧用户实例!有没有人遇到这个并找到一个更好的解决方法,除了用新的用户设置旧用户的所有属性...?
谢谢!
答案 0 :(得分:1)
RAC(self.lbl, userName) = RACObserve(self.viewModel, user.userName);
逗号表示“静态”部分(self.viewModel
)与动态变化部分(user.userName
)之间的中断。
这是RACObserve
的一个非常好的功能,但你可以自己实现这个功能,修改Leo的答案,以便它适用于不断变化的userName
:{{1不是用户名,而是用户名的信号,然后用map
“展平”:
switchToLatest
这个简单的例子不是很有用,因为RAC(self.lbl, userName) = [[RACObserve(self.viewModel, user) map:^(User *user) {
return RACObserve(user, userName);
}] switchToLatest];
内置了这个,但这种技术通常非常强大。你最终想要映射到未被观察到的东西的信号,所以我鼓励你花点时间来理解为什么会这样。