Полагаю, вы используете асинхронные запросы. Одним простым решением может быть проверка в вашем RKObjectLoderDelegate
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects
методе, все ли ваши данные уже загружены.
При инициировании запросов RestKit вы можете добавить «запрос» (называемый userData
в RestKit) к запросу и извлечь этот тег позже в обратных вызовах делегата.
Например, вы можете реализовать следующую логику:
Когда вы создаете свои запросы, добавляйте к каждому конкретному пользователю данные:
RKObjectLoader *loader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getMyData" objectMapping:mapping delegate:self];
[loader setUserData:@"FirstRequest"];
...
RKObjectLoader *loader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getMyData" objectMapping:mapping delegate:self];
[loader setUserData:@"ThirdRequest"];
и отметьте теги в didLoadObjects:
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
if ([[objectLoader userData] isEqual:@"FirstRequest"]) {
self.firstRequestData = objects;
}
... //handle the remaining requests
if (self.firstRequestData && self.secondRequestData && self.thirdRequestData) {
[self hideMyActivityIndicator];
}
}
Не забывайте обрабатывать ошибки при загрузке запросов.
В качестве альтернативы, если этот подход не будет соответствовать вашему сценарию - вы можете добавлять запросы и управлять ими в отдельной очереди и отслеживать ход выполнения. Если вам понадобится дополнительная информация о втором варианте, просто дайте мне знать.