前言
上一篇文章中,笔者简单的阅读了ReactiveCocoa官方文档,了解了ReactiveCocoa的基本使用后。这篇文章主要探讨一下,如何基于MVVM的设计模式在含有UITableView界面中使用RAC绑定数据。
MVVM
MVVM本质上是基于MVC的一个改进版,它是在传统MVC模式上添加了一个ViewModel。ViewModel可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑,为Controller减压。

实战
下面笔者将基于ReactiveCocoa+MVVM+UITableView,实现一个常见的列表展示,以及按钮点击改变cell中的字体颜色。
源码地址:
https://github.com/pengwj/blogWork/tree/master/code/ReacttiveObjC-MVVM-tableview
Controller
移除网络请求以及数据处理后的Controller异常的简洁。我看很多人将tablevie的delegate、datasoure代理方法都放到了ViewModel中,但是考虑到这样的话ViewModel就绑定了View,所以最终决定将代理方法都放在VC中,具体可以下载我的代码看看。
// 核心代码如下
- (void)initViewModel {
_viewModel = [MainViewModel new];
@weakify(self)
[_viewModel.fetchProductCommand.executing subscribeNext:^(NSNumber *executing) {
NSLog(@"command executing:%@", executing);
if (!executing.boolValue) {
@strongify(self)
[self.tableView.mj_header endRefreshing];
}
}];
[_viewModel.fetchMoreProductCommand.executing subscribeNext:^(NSNumber *executing) {
if (!executing.boolValue) {
@strongify(self);
[self.tableView.mj_footer endRefreshing];
}
}];
[_viewModel.errors subscribeNext:^(NSError *error) {
NSLog(@"something error:%@", error.userInfo);
//TODO: 这里可以选择一种合适的方式将错误信息展示出来
}];
}
- (void)bindViewM

本文介绍了如何在iOS开发中结合ReactiveCocoa和MVVM模式,实现在UITableView中的数据绑定和交互。通过创建Controller、Model、View和ViewModel,详细讲解了实战过程中的关键步骤,包括数据绑定、ViewModel的网络请求处理以及解决KVC监听数组变化的问题。文章还讨论了MVVM设计模式在实际项目中的应用和遇到的挑战,并提供了相关阅读资源和源码链接。
实战&spm=1001.2101.3001.5002&articleId=96768682&d=1&t=3&u=7999df66ae194d39b40e45914d01f0ab)
8734

被折叠的 条评论
为什么被折叠?



