[英]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.