文档章节

写给iOS小白的MVVM教程(序)

ios122
 ios122
发布于 2015/10/13 18:49
字数 752
阅读 164
收藏 3

这几天,需要重构下部分代码,这里简要记录下.但是涉及的技术要点还是很多,所以分为多个篇章叙述.此教程来源于,并将于应用于实践,不做过多的概念性阐释和争论.每个篇章都会附上实际的可执行的代码.因涉及的技术点,有许多探索的部分,暂定每两天更新一个篇章.欢迎广大iOS同行,批评指正!

教程内容,按更新顺序排序

  • 从MVC到MVVM: 结合实际的例子,提出并应用一种从MVC迁移到MVVM的可行性方案.
  • 使用RestKit简化网络请求: 此处会结合RestKit,提出并制作一个可直接应用于代码的网络请求实现方案,支持自动翻页,自动配置URL与数据模型的关联关系等.
  • 使用MVVM模式,实现iOS122.com网站的博客阅读: 会涉及到使用Leancloud做服务器端,使用marddown库解析markdwon内容,一个更加实际的MVVM各技术细节的具体实现技巧.

定义良好的接口,是成功的第一步!

//
//  YFMVVMDelegate.h
//  iOS122
//
//  Created by 颜风 on 15/10/13.
//  Copyright (c) 2015年 iOS122. All rights reserved.
//

#import <Foundation/Foundation.h>
@protocol YFMVVMRequestDelegate;



/**
 *  MVVM协议,用于规定MVVM模式的基本约定.
 *
 *  常用于约定"V",此处的V,指的是视图的载体,或者是连接点.可以是一个View,也可以是一个控制器,或者任意NSObject对象.
 */
@protocol YFMVVMDelegate <NSObject>

@required
@property (nonatomic, strong) id model; //!< 数据模型,用于表示从外部传入的数据.
@property (nonatomic, strong, readonly) id viewModel; //!< 数据模型,用于表示直接在视图上显示的数据模型.

@optional
@property (nonatomic, strong) id<YFMVVMRequestDelegate> request; //!< 网络请求.用于联网动态更新数据.

@end

/**
 *  用于规定MVVM中的request网络请求的协议.
 */
@protocol YFMVVMRequestDelegate <NSObject>

@required

/**
 *  获取数据.
 *
 *  @param component   MVVM组件中的V部分,可以是一个View,也可以是一个控制器,或者任意NSObject对象.
 *  @param success     请求成功时的回调.会把视图模型回调出去.
 *  @param failure     请求失败时的回调.会把错误信息回调出去.
 */
-(void) get: (id<YFMVVMDelegate>) component
    success: (void (^)(id))success
    failure:(void (^)(NSError *))failure;

@optional

/**
 *  重置页码,从头刷新.
 *
 *  下次调用 get:success:failure 方法时,会获取最新的数据.
 */
-(void) reset;

/**
 *  移动到下一页.
 *
 *  下次调用 get:success:failure 方法时,会获取下一页的数据.
 */
-(void) nextPage;

@end

© 著作权归作者所有

ios122
粉丝 72
博文 76
码字总数 132179
作品 3
东城
程序员
私信 提问
iOS开发框架MVVM 1理解开发模式

好了,我作大死的连续第五天奋斗在电脑跟前了,好的。 接着上次写的iOS开发框架MVVM 1理解开发模式(占坑,未写完)来继续聊聊我们的MVVM。 昨天聊了网络层的封装,今天聊聊开发模式,架构师应...

testHs
09/29
0
0
EasyIOS 2.0 发布,基于 MVVM 的 IOS 开发框架

全新基于MVVM(Model-View-ViewModel)编程模式架构,开启EasyIOS开发函数式编程新篇章。 EasyIOS 2.0类似AngularJs,最为核心的是:MVVM、ORM、模块化、自动化双向数据绑定、等等 关于有疑问什...

墨水
2014/07/30
9.8K
9
OSChina 技术专题之 Swift 苹果全新开发语言

Swift 是苹果新推出的编程语言,专门针对 OS X 和 iOS 的应用开发。Swift 在各个方面优于 Objective-C,也不会有那么多复杂的符号和表达式。同时,Swift 更加快速、便利、高效、安全。除此之...

OSC编辑部
2014/11/10
4.2K
4
推荐:小白的Python新手教程​

这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本。 从基础到Web开发,附带完整项目实战+iOS App,立刻猛击: 小白的Python新手教程...

廖雪峰
2015/08/04
1K
3
EasyIOS 2.1 发布,优化网络请求与ORM操作

EasyIOS 2.1发布 此版本相较2.0更新内容如下: 1.优化ORM操作 ,丰富数据库查询方法 2.修改网络请求,选用大家熟悉的AFNetworking 移除 MKNetWorkKit 3.增加正则表达式操作类 4.集成更加友好...

墨水
2014/09/12
2.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
38分钟前
4
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
40分钟前
6
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部