使用mvvm的最大好处,就是给controller肩负,其次也不用再把model和view直接耦合绑定。
viewmodel的最大好处是将网络请求分3个状态:请求中,请求成功,请求失败。
tallk is cheap, bb the code.
typedef enum : NSUInteger {
kAshNetworkStatusFailed = 0,
kAshNetworkStatusOK,
kAshNetworkStatusConnecting
} AshNetworkStatus_t;
再controller中对三状态进行观测;
[RACObserve(self.viewModel, networkStatus) subscribeNext:^(NSNumber *x) {
switch (x.longValue) {
case kAshNetworkStatusConnecting:{
[SVProgressHUD show];
}
break;
case kAshNetworkStatusFailed:{
[SVProgressHUD showErrorWithStatus:@"fail to login"];
}
break;
case kAshNetworkStatusOK:{
[SVProgressHUD showSuccessWithStatus:self.viewModel.user.name];
}
break;
default:
break;
}
}];
这样viewModel将网络请求分离出来controller。
源码下载 :http://pan.baidu.com/s/1jGpklrK