У меня есть класс, который я вызываю несколько раз с разными данными.
Этот класс вызывает веб-сервис, анализирует его ответ на NSDictionary и сохраняет данные в Core Data.
Вызов веб-службы и сохранение основных данных выполняются в разных потоках с использованием очередей основных данных, поэтому пользовательский интерфейс продолжает реагировать.
Класс:
- (void)refreshDataFromWebService:(NSString *)webserviceWSDL
{
dispatch_queue_t receiveActivities = dispatch_queue_create("com.myApp.ws.wsdlMethod", NULL);
dispatch_async(receiveData, ^(void)
{
//call web service
//...
//parse received data to NSDictionary
//...
});
dispatch_release(receiveData);
}
//some work
//the class that works with the WS, calls a method on it's delegate, and the saveData is called.
- (void)saveData
{
dispatch_queue_t request_queue = dispatch_queue_create("com.myApp.insertDataOnCoreData", NULL);
dispatch_async(request_queue, ^{
//save data to CoreData with new Manage Object Context
//...
//...
});
dispatch_release(request_queue);
}
Проблема в том, что мне нужно вызывать этот класс примерно 15 раз и в каком-то порядке.
Каков наилучший способ сделать это?
Должен ли я позвонить:
[SomeClass refreshDataFromWebService:method_1];
[SomeClass refreshDataFromWebService:method_2];
[SomeClass refreshDataFromWebService:method_3];
[SomeClass refreshDataFromWebService:method_4];
или я должен поступить иначе?
Цель состоит в том, чтобы method_2 вызывался только после того, как method_1 завершает сохранение в CoreData из-за взаимосвязей.
Спасибо за вашу драгоценную помощь,
Руи Лопес