iOS中的MVVM —视图模型和网络

在上一篇文章中,我指出您的视图模型应尽可能精简。 这意味着您的视图模型不应执行数据访问或联网任务。 很少有读者指出,使用MVVM模式已久的Microsoft提倡通过视图模型调用网络和数据访问层的概念。

在本文中,我想采用Microsoft的方法,并在视图模型实现中移动网络代码。 我已经将ArticleListViewModel的定义更新为以下内容:

ArticleListViewModel现在是一个类,并且需要初始化Webservice的实例。 因为现在在上一篇文章中使用过初始化器,所以现在忽略将其作为参数的初始化器。

ArticleListViewModel包含一个get函数,该函数负责将填充的视图模型返回给调用者。

而不是返回ArticleViewModel对象的列表,而是返回一个填充所有子对象的单个ArticleListViewModel对象。

现在,在视图控制器内部,您可以调用视图模型的get方法,如下所示:

调用域对象并将其转换为相应的视图模型对象的复杂性从视图控制器转移到视图模型实现。

如果您还记得我最初对视图模型的定义,则视图模型负责将数据提供给视图。 这种新方法当然可以做到这一点,但要以使视图模型复杂化为代价。

没有正确或错误的方法。 MVVM具有不同的形状,形式和实现。 在进行项目时,请采用最适合您需求的方法。