我有以下代码。它的作用是通过调用另一个类/方法 - POSRestletManager来执行一系列同步(使用AFNetworking)。
在每个方法之前,从getSettingsWithEnv
开始,我正在显示一条消息(使用SVProgressHud)来向用户显示事物的位置。这似乎立即显示所有方法调用(因为它们是异步),但仅在方法调用完成后才显示。即。在完成块中。如何在通话前显示信息?它甚至可能吗?
我问的原因是最后一次调用(getItemsWithLocation
)是同步执行的,因此在同步所有项目之前不会显示消息“同步项目...”...这显然是不是我想要的。
任何人都可以帮助我更好地构建这个吗?
这是我的代码。
- (IBAction)updateSettings:(id)sender {
isUpdating = YES;
[POSRestletsManager getInstance].delegate = self;
[POSRestletsManager setHeaderWithUsername:[POSUserDefaults getRegisteringEmail] Password:[POSUserDefaults getRegisteringPassword] accountNumber:[POSUserDefaults getRegisteringAccount] andRoleNumber:[POSUserDefaults getRegisteringRole]];
[POSRestletsManager getDataCenterURL:[POSUserDefaults getEnvironmentValue] completion:^{
[SVProgressHUD showWithStatus:@"Sync Settings..." maskType:SVProgressHUDMaskTypeGradient];
[self.navigationController popToRootViewControllerAnimated:YES];
[POSRestletsManager getSettingsWithEnv:[POSUserDefaults getEnvironmentValue] locationId:((NSString *)[POSUserDefaults getRegisteringTerminal]).integerValue andUpdateType:@"Full" completion:^{
[SVProgressHUD dismiss];
[SVProgressHUD showWithStatus:@"Sync Customers..." maskType:SVProgressHUDMaskTypeGradient];
[POSRestletsManager getCustomersListWithUpdateType:[POSUserDefaults getEnvironmentValue] andUpdateType:_customerSync completion:^{
[SVProgressHUD dismiss];
[SVProgressHUD showWithStatus:@"Sync Items..." maskType:SVProgressHUDMaskTypeGradient];
[POSRestletsManager getItemsWithLocation:[[POSCoreDataManager getInstance] getLocationId] andUpdateType:_itemSync andEnvironment:[POSUserDefaults getEnvironmentValue]];
[[NSNotificationCenter defaultCenter] postNotificationName:@"POSSetCustomerSettings" object:nil] ;
}];
}];
}];
}