我正在为我的应用程序创建一个验证方法,悬停我的返回值有问题;
不兼容的 block 指针类型发送字符...
-(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);
}];
最佳答案
如果要使用 sucess
的值在 block 之外,您必须将其复制到 __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;
}
}
block 本身(正如我从原型(prototype)中猜测的那样)不返回值。
请注意,这仅适用于
[User validateEmail:sucess:]
同步工作,因此 returnValue
在函数调用返回时定义。
关于iphone - block 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066753/