【发布时间】:2015-07-29 13:57:36
【问题描述】:
我正在使用 MVVM 设计为我的应用程序开发注册功能。
我创建了一个 sharedInstance 类并使用如下块实现了 register 方法:
- (void)registerUserWithName:(NSString *)name
phone:(NSString *)phone
password:(NSString *)password
completion:(CompletionBlock)aCallback
{
UserModel *user = [[UserModel alloc] init];
user.name = name;
user.phone = phone;
user.password = password;
[[self.client registerUser:user].task continueWithBlock:^id(BFTask *task) {
if (task.error) {
aCallback(NO, task.error);
return nil;
}
aCallback(YES, nil);
return nil;
}];
}
在 MVC 设计中,我会这样做来调用这个方法:
GlobalFunctions *function = [GlobalFunctions sharedInstance];
[function registerUserWithName:name phone:number password:password completion:^(BOOL isSuccess, NSError *error) {
if(isSuccess){
ViewController *vc = [[ViewController alloc]init];
[self.navigationController pushViewController:vc animated:YES];
}
}];
我尝试将此代码应用于 MVVM 设计。在我的 viewModel 中,我有:
-(BOOL)registerUserWithUser:(NSString*)name withPhone: (NSString*)number withPassword: (NSString*)password{
RBCFunctions *function = [RBCFunctions sharedInstance];
[function registerUserWithName:name phone:number password:password completion:^(BOOL isSuccess, NSError *error) {
return isSuccess;
}];
}
但是,这不起作用,因为我收到编译器错误:
Incompatible block pointer types sending BOOL
我怎样才能正确地实现它?
【问题讨论】:
标签: ios objective-c mvvm viewmodel objective-c-blocks