iphone - block 返回错误

标签 iphone objective-c ios objective-c-blocks

我正在为我的应用程序创建一个验证方法,悬停我的返回值有问题;

不兼容的 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/

相关文章:

iphone - 如何将背景颜色设置为搜索栏的清晰颜色

ios - NSURLErrorDomain error -1 尝试下载 http Live Streaming Video 时

iphone - 对象没有从 NSMutableArray 中删除?

iphone - 填空模型

objective-c - 基于 View 的 NSOutlineView 中的 NSAttributedString 呈现为普通字符串?

ios - typedef 行 : 上的“预期标识符”错误

iphone - iOS:如何知道是否调用了 viewDidLoad?

ios - 用 Facebook 好友填充 UITableView

iphone - CALayer 性能与 UIImageView 性能

iphone - 在 TableView 中重用单元格会导致问题