现在一般开发都是使用MVC模式和MVP模式,MVC大家都会用,MVP的话网上理论资料一大堆,但是手把手教人怎么使用的却比较少,今天就跟着我手把手学习MVP。
准备工作
先下载我 这个是我学习swift3.0时候写的微博首页,采用的是swift3.0+MVP+自动布局写的demo。
打开项目,如果发现没有数据的话就是 WBToken已经过期了,你打开Common.swift 然后换上自己的token或者联系我更新token就行了。(因为懒,就没做登入)
现在进入正文
1.先找到Home文件夹
001.png和MVC相比多了一个ViewModel
ViewModel的作用就是让网络请求,json转model的出来都在这里面处理好,Controller里面只是显示控件和传递数据,不处理任何数据。
然后看到HomeViewModel.swift里面
可以看到这里有个网络请求,这个就是请求微博首页数据的接口,
拿到数据后,把所以数据转成相应的model,然后存到数组里面,ViewModel可以写个父类,把一些公用的东西放到里面,然后用等所有数据都处理完毕,调用闭包告诉控制器我已经处理好数据了,可以刷新数据。(闭包就是OC的block)大家如果想知道OC怎么写的话不要急,我会放到最后面。
接下来看Controller
003.png首先懒加载viewModel
在相应的获取数据方法里面调用数据刷新方法,在闭包里面赋值,然后在刷新数据,这个闭包会回调viewModel里面的那个方法,进行数据刷新。
这样看是不是觉得Controller里面的代码特别少,而且网络请求和Controller解藕合,想在其他地方调用这个网络请求只要创建这个对象再调用这个方法就拿到数据了。
贴一下OC的图
viewModel父类
004.pngviewModel.h
005.pngviewModel.m
006.pngController.m
007.png赋值
008.png
网友评论