0

我有以下代码。它所做的是通过调用另一个类/方法 - 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] ;

        }];
    }];

}];

}
4

0 回答 0