簡體   English   中英

完成塊完成后如何調用方法?

[英]How to call a method once the completion block finish?

我想先調用signUp方法,一旦獲得用戶ID,就需要調用另一個方法normalSignupMethod

[ConnectionObj signUp:user];
[helper normalSignupMethod:dict];

注冊方法:

[MYRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) {
    // Sign up was successful
    // Store user id
    [SingletonClass sharedMySingleton].userID = [NSString stringWithFormat:@"%@",response.data[@"id"]];   

} errorBlock:^(QBResponse *response) {
    // Handle error here
    NSLog(@" error in creating session %@", response.error);
    [SVProgressHUD showErrorWithStatus:NSLocalizedString(@"SignUp to Chat error!", nil)];
}];

這就是我所說的:

dispatch_group_t group = dispatch_group_create(); 
       dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
    NSLog(@"Block1");
    [ConnectionObj signUp:user];
});

dispatch_group_notify(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {

    NSLog(@"Group notify");
    [helper normalSignupMethod:dict];
    dispatch_async(dispatch_get_main_queue(), ^{
        [SVProgressHUD dismiss];
    });
});

首先執行塊1,然后調用組通知。 但是我在normalSignupMethod完成后得到了userID。 如何在調用normalSignupMethod之前等待signUp方法獲取用戶ID?

您可以使用signUp方法創建一個block ,並傳遞Bool完成值以檢查其是否成功調用。 因此,像這樣更改您的方法聲明。

-(void)signUp:(QBUser*)user andHandler:(void (^)(BOOL result))completionHandler;

及其定義

-(void)signUp:(QBUser*)user andHandler:(void (^)(BOOL result))completionHandler {
    [MYRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) {
        [SingletonClass sharedMySingleton].userID = [NSString stringWithFormat:@"%@",response.data[@"id"]];   
        completionHandler(YES);
    } errorBlock:^(QBResponse *response) {
       // Handle error here
        NSLog(@" error in creating session %@", response.error);
        [SVProgressHUD showErrorWithStatus:NSLocalizedString(@"SignUp to Chat error!", nil)];
        completionHandler(NO);
    }];
}

現在像這樣調用此方法。

[ConnectionObj signUp:user andHandler:^(BOOL result) {
    if(result) {
        [helper normalSignupMethod:dict];
    }
}];

您可以撥打normalSignupMethod一旦signUp:successBlock請求返回到successBlock

[MYRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) {
        // Sign up was successful
        // Store user id
        [SingletonClass sharedMySingleton].userID = [NSString stringWithFormat:@"%@",response.data[@"id"]]; 

        //call the signup method 
        [helper normalSignupMethod:dict];

    } errorBlock:^(QBResponse *response) {
        // Handle error here
        NSLog(@" error in creating session %@", response.error);
        [SVProgressHUD showErrorWithStatus:NSLocalizedString(@"SignUp to Chat error!", nil)];
    }];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM