iOS开发-MVP模式教程

作者: 镜花水月忆存逝兮 | 来源:发表于2017-06-02 11:26 被阅读343次

    现在一般开发都是使用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里面

    002.png

    可以看到这里有个网络请求,这个就是请求微博首页数据的接口,
    拿到数据后,把所以数据转成相应的model,然后存到数组里面,ViewModel可以写个父类,把一些公用的东西放到里面,然后用等所有数据都处理完毕,调用闭包告诉控制器我已经处理好数据了,可以刷新数据。(闭包就是OC的block)大家如果想知道OC怎么写的话不要急,我会放到最后面。

    接下来看Controller

    003.png

    首先懒加载viewModel
    在相应的获取数据方法里面调用数据刷新方法,在闭包里面赋值,然后在刷新数据,这个闭包会回调viewModel里面的那个方法,进行数据刷新。
    这样看是不是觉得Controller里面的代码特别少,而且网络请求和Controller解藕合,想在其他地方调用这个网络请求只要创建这个对象再调用这个方法就拿到数据了。

    贴一下OC的图

    viewModel父类

    004.png

    viewModel.h

    005.png

    viewModel.m

    006.png

    Controller.m

    007.png

    赋值

    008.png

    如果我的文章对你有所帮助,请帮忙点个赞👍,谢谢!

    相关文章

      网友评论

      • cookov:标题是讲MVP, 但实际内容却是讲MVVM啊。不过,MVVM讲得还不错,代码示例很清晰。:+1:
        镜花水月忆存逝兮:@cookov 兄弟,你们能别闹吗,上次有个人说讲的是mvp不是mvvm我就改了,然后我去研究了mvvm,mvvm是需要绑定的。我这个没有绑定

      本文标题:iOS开发-MVP模式教程

      本文链接:https://www.haomeiwen.com/subject/jloyfxtx.html