在没有使用ReactiveCocoa的情况下,任何人都在您的iOS应用中实现了MVVM模式?
在这里找到了很多例子,但所有这些例子都使用了Reactive Cocoa。我想要一个MVVM实现的简单示例。
答案 0 :(得分:43)
MVVM肯定不需要Reactive Cocoa。我已经构建了一个非常成功的MVVM框架,没有任何绑定。绑定不是MVVM的要求。
具体而言,View Model和View之间的链接确实需要View Model向View发出信号,告知它需要更新其数据。这可以使用Reactive Cocoa,KVO(我真的很喜欢Facebook的KVOController),甚至使用简单的委托模式来实现。
视图模型知道视图何时需要更新 - 数据已更改,或者您是否通过模型生成异步数据请求,并且模型已加载到视图模型中。
设置View时,可以将每个控件绑定到View Model上的相应值。我发现当我需要制作屏幕时,这可能会非常繁琐。相反,当视图模型发出视图应该更新自身时,我宁愿使用一个方法。在该方法中,我只是设置所有控件属性。
现在,您只需关注该方法是如何触发的。在我的个人框架中,我利用KVO和我的ViewControllers监视我的ViewModel基类的时间戳属性。每当我的视图模型更新其基础数据时,其时间戳都会更新,从而触发更新。您可以轻松地将View Controller注册为ViewModel的更新代理,并使用标准委托模式。
同样,MVVM不是关于特定的实现要求,而是更多关于关注点分离,依赖关系解耦和封装的更高层次概念。