mvvm

来源:互联网 发布:vue.js 时间戳转日期 编辑:程序博客网 时间:2024/05/01 23:01

Model层是少不了的了,我们得有东西充当DTO(数据传输对象),当然,用字典也是可以的,编程么,要灵活一些。Model层是比较薄的一层,如果学过Java的小伙伴的话,对JavaBean应该不陌生吧。

ViewModel层,就是View和Model层的粘合剂,他是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样的代码的极好的地方。说白了,就是把原来ViewController层的业务逻辑和页面逻辑等剥离出来放到ViewModel层。

View层,就是ViewController层,他的任务就是从ViewModel层获取数据,然后显示。

上面对MVVM就先简单的这么一说,好好的理解并应用的话,还得实战。

举一个用Storyboard好处的例子就OK了,给控件添加约束,如果用Storyboard完成那是分分秒的事情,而用代码的添加约束的话是何等的恶心,纯代码写的话会把大量的时间花在写UI上,而且技术含量是比较低的,这个个人认为没什么必要。在团队合作中负责UI开发的小伙伴只需没人负责一个Storyboard,各开发各的,用SVN提交时把下面的勾(如下图)去掉即可,这样用Storyboard是没有问题的。然后再用代码进行整合就OK了。如果你在你的工程中加入了新的资源文件的话,用XCode自带的SVN提交的话需要吧Project Setting文件一并提交。

.h viewmodel

////  ViewModelClass.h//  MVVMTest////  Created by 李泽鲁 on 15/1/8.//  Copyright (c) 2015年 李泽鲁. All rights reserved.////Kicking off network or database requests//Determining when information should be hidden or shown//Date and number formatting//Localization#import <Foundation/Foundation.h>@interface ViewModelClass : NSObject@property (strong, nonatomic) ReturnValueBlock returnBlock;@property (strong, nonatomic) ErrorCodeBlock errorBlock;@property (strong, nonatomic) FailureBlock failureBlock;//获取网络的链接状态-(void) netWorkStateWithNetConnectBlock: (NetWorkBlock) netConnectBlock WithURlStr: (NSString *) strURl;// 传入交互的Block块-(void) setBlockWithReturnBlock: (ReturnValueBlock) returnBlock                 WithErrorBlock: (ErrorCodeBlock) errorBlock               WithFailureBlock: (FailureBlock) failureBlock;@end

.m

////  ViewModelClass.m//  MVVMTest////  Created by 李泽鲁 on 15/1/8.//  Copyright (c) 2015年 李泽鲁. All rights reserved.//#import "ViewModelClass.h"@implementation ViewModelClass#pragma 获取网络可到达状态-(void) netWorkStateWithNetConnectBlock: (NetWorkBlock) netConnectBlock WithURlStr: (NSString *) strURl;{    BOOL netState = [NetRequestClass netWorkReachabilityWithURLString:strURl];    netConnectBlock(netState);}#pragma 接收穿过来的block-(void) setBlockWithReturnBlock: (ReturnValueBlock) returnBlock                 WithErrorBlock: (ErrorCodeBlock) errorBlock               WithFailureBlock: (FailureBlock) failureBlock{    _returnBlock = returnBlock;    _errorBlock = errorBlock;    _failureBlock = failureBlock;}@end
0 0
原创粉丝点击