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的简单使用,以上是个人的笔记记录,如有错漏.请勿见怪.