星空网 > 软件开发 > 操作系统

ios MVVM实践 刷新网络请求+tableView展示数据

先展示实现的效果图如下:

ios MVVM实践 刷新网络请求+tableView展示数据images/loading.gif' data-original="http://images2017.cnblogs.com/blog/928234/201710/928234-20171013152412121-48259633.gif" >

 

此示例展示用的是MVVM结构形式,表述如下 

M:数据Model的存储,可以用来对属性进行处理。(即胖model概念,上图中xx万人订阅这个处理方法写在Model内)

V: View。用来统一管理控件初始化与布局。

VM:viewModel。负责网络请求及其他计算或事件处理

 

目录结构如下:

ios MVVM实践 刷新网络请求+tableView展示数据

viewController文件夹下有一个控制器和一个MLDataView,这个view添加在控制器self.view上,然后这个控制器中其他view的初始化,添加和布局都在这个MLDataView里进行,这样把View分离整合到了一起。

MLDataViewModel里负责了网络请求,tableView代理和数据源方法的实现,及其他一些事件逻辑的封装。传统MVC一般这些代码都是放在控制器内,现在这样大量减少了控制器的代码。

MLDataModel里存储传输的数据,它也可以用来处理一些格式化的数据。如下图

ios MVVM实践 刷新网络请求+tableView展示数据

这样model也可以分担一些属性的格式化处理。

 

整体架构上的一些其他封装:

1.自定义MLHTTPSessionManager继承自AFHTTPSessionManager,可以在自定义的类里优雅地处理请求头,响应头或https设置相关的一些信息

2.网络请求扩展性强:自己公司的网络请求实现文件里逻辑要多得多,包括Token失效,刷新RefreshToken,网络请求错误码的拦截等。这些业务都可以根据自己的需要加入。

3.MLCustomHud弹出toast提示。实用性非常强。

4.Base文件夹下有两个类,其实企业及项目基本都会建立基类,也就是所以view都可以有一个基类,如tableView,UIlabel,UIButton,WKWebView,UITableViewCell等等,然后可以在基类中建立一些快捷方法设置属性等。

5.Category文件夹下Unicode里的代码为了实现nslog无法输出中文的问题。

6.Category下UIView+HudCount分类,用runTime对view进行引用计数。它的独有优势在于防止多个网络请求同时发生时对Loading框产生干扰,即可防止loading框重叠或提前消失。

 

最后附上demo地址:

码云:https://gitee.com/LiJinShi/MVVM_Demo

gitHub:https://github.com/LiJinShi/MVVM_Demo

 

原标题:ios MVVM实践 刷新网络请求+tableView展示数据

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

海运到 越南:https://www.goluckyvip.com/tag/104506.html
越南海运一个集装箱费用多少:https://www.goluckyvip.com/tag/104508.html
越南的海运公司:https://www.goluckyvip.com/tag/104509.html
林超聊跨境:https://www.goluckyvip.com/tag/10451.html
海运到越南价格:https://www.goluckyvip.com/tag/104510.html
到越南海运价格:https://www.goluckyvip.com/tag/104511.html
3月独立站新品观察:比基尼、连衣裙、凉鞋、止汗霜等夏季新品热推! :https://www.kjdsnews.com/a/1836553.html
3月独立站新品观察:比基尼、连衣裙、凉鞋、止汗霜等夏季新品热推! :https://www.goluckyvip.com/news/188216.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流