ReactiveCocoa在项目中的简单使用

1.ReactiveCocoa简介

ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。

ReactiveCocoa之基础篇,简单介绍和了解请查看连接.

2.项目中的应用

现在一般的项目都是使用MVVM模式的,这个就很好的使用RAC.

2.1建立model

@interfaceRACTestModel :NSObject

/* 名字 */

@property(strong,nonatomic)NSString*name;

@end

2.2建立ViewModel

.h文件

@interface RACTestViewModel :NSObject

/* 请求数据 */

@property(nonatomic,strong)RACCommand*getDatastCommand;

/* UI刷新 */

@property(nonatomic,strong)RACSubject*getUIRefresh;

@end

.m文件

@implementationHGHomeBlueBoxViewModel

- (id)init {

if(self= [super init]) {

[self bindViewModel]; //自定义的一个方法

}

returnself;

}

- (void)bindViewModel {

@weakify(self);

[self.getDatastCommand.executionSignals.switchToLatest subscribeNext:^(idx) {

@strongify(self);

[self.getUIRefresh sendNext:x];

}];

}

/**

请求数据

@return 返回响应者

*/

- (RACCommand*)getDatastCommand {

if(_getDatastCommand == nil) {

_getDatastCommand= [[RACCommand alloc] initWithSignalBlock:^RACSignal*(idinput) {

return [RACSignal createSignal:^RACDisposable*(id subscriber) {

//接口请求:这个请求是基于AF的,不同的有不用的写法.只是一个例子.

[RACConnect getDatasWithParams:inputrequestType:RequestTypeGetsuccess:^(idresponseObject) {

[subscriber sendNext:responseObject]; //发送

[subscriber sendCompleted]; //发送完成

}failure:^(HGHttpErrorModel*httpError) {

[subscriber sendNext:httpError];

[subscriber sendCompleted];

}];

return nil;

}];

}];

}

return _getDatastCommand;

}

/**

刷新

@return 返回响应者

*/

- (RACSubject*)getUIRefresh {

if(_getUIRefresh == nil) {

_getUIRefresh =  [RACSubject subject]; 

}

return _getUIRefresh;

}

2.3 viewController中的使用

- (void)viewDidLoad {

[super viewDidLoad];

[self bindViewModel]; //实现该方法

}

#pragma mark - 数据请求01

- (IBAction)onClickBtnWithId:(NSString*)id{

NSMutableDictionary *params = [NSMutableDictionary dictionary];

[params setObject:id forKey:@"id"];

[self.RACTestViewModel.getDataCommandexecute:/*请求接口包*/];

}

#pragma mark -得到数据02

- (void)bindViewModel {

@weakify(self);

[self.RACTestViewModel.getUIRefreshsubscribeNext:^(idx) {

@strongify(self);

//请求数据完成之后的处理和刷新界面操作

}];

}

3.总结

上面就是基于MVVM模式的RAC的简单使用,以上是个人的笔记记录,如有错漏.请勿见怪.

你可能感兴趣的:(ReactiveCocoa在项目中的简单使用)