简单的概念就不多说了,都有所了解。没见过也听过。
在面试复习的时候,知道这是什么东西,但是当自己在使用时,出现了无从下手的感觉。
自己记录自己要记得东西,一些具体实施的东西。
ViewModel是通过“绑定”方式与View交互的。
好处:
- 代码复用
- 单元测试
绑定方式:
- 单向数据绑定
- 双向数据绑定
channelTerminal - 集合数据绑定
- 执行过程绑定
- 错误处理
实施步骤:
创建base View中的属性;
创建base ViewModel对应属性的signal;
业务A Model的属性创建(使用mantle进行映射);
A ViewModel 继承baseViewModel,根据业务逻辑(需求),将数据加工并映射的ViewMode的UI属性上。使用RAC的map对A Model的属性进行映射。
网络请求或者其他方式得到的数据(demoModel)。
对应得ViewModel对其获取数据的方法进行绑定,根据不同业务的模型绑定不同的获取方式。
viewController中将刷新数据方式与ViewModel中获取数据的方法进行绑定。
ViewModel中的scenic属性对外不暴露,所以不是一“可变”值,所以这里可以使用
[RACSignal return:scenic]
得到一个一次性的信号。如果对应的scenic属性可能被外部修改,则应使用
RACObserve(self, scenic)
将其转变为信号。