我正在为我的应用程序创建一个验证方法,悬停我遇到了返回值的问题;
不兼容的块指针类型发送char ...
-(BOOL)validateEmail{
if (self.ownUser.emailUser != self.emailField) {
[UserAPIClient validateEmail:self.emailField sucess:^(BOOL sucess, NSError *error) {
if (sucess) {
return YES;
}else{
NSLog(@"Can´t change e mail, already one is created in the database");
return NO;
}
}];
}else{
return YES;
}
}
有人可以帮我解决这个问题吗?
提前致谢...
修改
我完全错过了正确的解决方案,只需采用我的 UserApiClient 来返回BOOL
-(BOOL)validateEmail{
if (self.ownUser.emailUser != self.emailField) {
return [UserAPIClient validateEmail:self.emailField];
}else{
return YES;
}
}
编辑2 知道,我刚才意识到,我需要这个方法的结果才能做出一些改变。 如何将此方法更改为同步方法?
[[MYApiClient sharedInstance] getPath:@"validateEmail" parameters:params
success:^(AFHTTPRequestOperation *operation, id JSON) {
NSLog(@"SUCESS %@", JSON);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error %@", error);
}];
答案 0 :(得分:2)
如果您想在块之外使用sucess
的值,则必须将其复制到__block
变量:
-(BOOL)validateEmail {
if (self.ownUser.emailUser != self.emailField) {
__block BOOL returnValue;
[User validateEmail:self.emailField sucess:^(BOOL sucess, NSError *error) {
if (sucess) {
returnValue = YES;
}else{
NSLog(@"Can´t change e mail, already one is created in the database");
returnValue = NO;
}
}];
return returnValue;
} else {
return YES;
}
}
块本身(正如我从原型中猜测的那样)不会返回值。
请注意,仅当[User validateEmail:sucess:]
同步时才会起作用,以便在函数调用返回时定义returnValue
。
答案 1 :(得分:1)
您不显示方法[User validateEmail:sucess:]
(原文如此)的声明,但看起来该块被声明为返回BOOL
以外的其他内容。