我有以下代码。它所做的是通过调用另一个类/方法 - POSRestletManager 来执行一系列同步(使用 AFNetworking)。
在每种方法之前,从 开始getSettingsWithEnv
,我会显示一条消息(使用 SVProgressHud),以向用户显示事物的位置。对于所有方法调用,这似乎会立即显示(因为它们是异步的),但仅在方法调用完成后才会显示。IE。在完成块中。如何在通话前显示消息?有可能吗?
我问的原因是最后一次调用 ( 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] ;
}];
}];
}];
}