Я тестирую RestKit и мне нужен доступ к различным BaseUrls, а также иногда доступ к веб-службе с одним и тем же baseUrl из разных мест "одновременно", наконец, мне также нужно получить доступ к одному и тому же baseUrl с разными ressourcePaths в одном контроллере.
В моем делегате приложения я настроил синглтон RKObjectManager следующим образом.
RKObjectManager *objectManager = [RKObjectManager objectManagerWithBaseURL:kBaseUrl];
[objectManager registerClass:[EntityClass1 class] forElementNamed:@"element1"];
[objectManager registerClass:[EntityClass2 class] forElementNamed:@"element2"];
.
.
.
etc.
С одноэлементным подходом действительно легко работать, однако я не могу понять, как разделить различныевызовы веб-службы.
В MyViewController, который реализует RKObjectLoaderDelegate, у меня будут два метода:
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects {
//stuff with result
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
//stuff with error
}
Это не вызывает проблем, когда MyViewController использует один синглтон RKObjectManager для доступа к одному ressourcePath с однимbaseUrl.
Если я запускаю разные запросы следующим образом:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:FLICKRPath delegate:self]
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:FOURSQUAREPath delegate:self]
и т. д., в пределах одного и того же MyController моя проблема заключается в том, что FLICKRPath и FOURSQUAREPath, конечно, имеют разные baseUrl, ноRKObjectManager только один?
Если я получуэто работает и может иметь разные RKObjectManager другая проблема возникает.Методы делегатов didLoadObjects и didFailWithError будут получать результаты от обоих RKObjectManager, и я не вижу другого способа отличить их, кроме их baseUrls.Потенциальное сравнение каждого возвращаемого значения с baseUrl и, что еще хуже, ressourcePath, в методе делегата меня совсем не привлекает.
Если у меня есть разные RKObjectManagers, я думаю, я мог бы передать им разные делегаты и создать классыпредназначенный для работы с возвращаемыми значениями из различных baseUrls и ressourcePaths.Это означало бы, что мне нужно было построить еще одну абстракцию поверх MyController и RestKit, что также кажется грязным.
У меня сильное чувство, что я поступаю неправильно, источник RestKit очень впечатляет, чтоуказывает, что я борюсь с рамками.Я был бы очень признателен за лучшее понимание практики по этому вопросу.Я просмотрел все ресурсы и примеры, которые мог найти, но не видел описанного выше варианта использования.Это всегда один RKObjectManager, один baseUrl и один ressourcePath.
Заранее спасибо.