iOS学习记录之MVVM+RAC

最近在开始学习MVVM, 感觉比较好理解,可是应用起来, 总是有点脱离不了MVC的思考模式.

从最简单的开始, 比如现在我们要完成这样的一个项目: 开发的APP(只搭建其中的三个界面 --- 首页, 评论页面, 以及详情界面, 还有一个就是登陆界面), 如果可以, 我真的很想把的接口提供给大家,但是为了只是知识产权, 我还是不能把接口给大家, 不过, 我还是可以给大家一个JSON的数据, 以便大家自己来亲手敲敲这个代码.以便实现我们的学习.

MVVM ---- 在这里我先假设你已经有了对MVVM的了解, 如果对MVVM还不是很了解的话, 你可以直接跳到本文的最下面的连接, 有一些博客或者文章来介绍MVVM.认真读完这些文章, 然后我们在一起开始我们的MVVM的学习.

SRModel.h


//作者名称
@property (nonatomic, copy)NSString *author;
//类型
@property (nonatomic, copy)NSString *category;
//评论数
@property (nonatomic, copy)NSString *comment;
@property (nonatomic, copy)NSString *create_time;
@property (nonatomic, copy)NSString *excerpt;
@property (nonatomic, copy)NSString *good
@property (nonatomic, copy)NSString *thumbnail;
@property (nonatomic, copy)NSString *title;
@property (nonatomic, copy)NSString *view;

按照MVC的模式, 我们应该写一个单例, 单例里面写上数据请求方法, 然后给tableViewController赋值.

遇到的第一个问题:
首页是个tableViewController, tableView上有cell(重用), 怎么让viewModel给这些cell提供数据, 并且来监听cell上的事件呢?
我在网上搜索了一些其他的博客, 并没有找到心中觉得合适的答案.所以, 我就只能自己去理解.
我觉得可以给SRViewModel设置一些子ViewModel, 比如就叫SRCellViewModel, 用SRCellViewModel来对cell提供数据以及管理cell的交互事件.

在这里,还有一个小细节问题, 就是图片视图的问题, UIImageView需要一个UIImage对象(数据), 可是UIImage是基于UIKit框架的,那么我是否应该在SRCellViewModel里面导入UIKit框架?添加一个UIImage的属性,用来给UIImageView视图赋值呢? 我看到网上其他的博客上有的人说可以这样做, 有的人也说, 最好不要这样做.
我认真的想了想, 基于MVVM的设计思想, VM负责的视图的表示逻辑, 是给View提供数据并深刻与View交互,帮助VC减负, 同时更加有利于进行测试以及代码的复用来考虑, 所以,我觉得最好还是不要把UIKit框架导入ViewModel, 也就是说, 不要设置ViewModel的属性有一个UIImage的对象的.

建议使用以下的方法:

SRCellView.m -- bindViewModel

[self.avatarImageView sd_setImageWithURL:viewModel.avatarURL];

最后附上学习MVVM的相关连接:

http://yulingtianxia.com/blog/2015/05/21/ReactiveCocoa-and-MVVM-an-Introduction/

希望, 大家看完这些连接后, 我们来继续我们的学习;

你可能感兴趣的:(iOS学习记录之MVVM+RAC)