Учитывая ваши требования к валидации, я думаю, что это будет проще всего за одну операцию, хотя это может превратиться в комок с точки зрения структуры кода.
Вы, по сути, захотите сделать две выборки проводов, чтобы получить весь требуемый набор данных, а затем объединить данные и проанализировать их одновременно в Core Data.
Если вы собираетесь использовать асинхронные API-интерфейсы, это, по сути, означает структурирование класса, который ожидает завершения обеих операций, а затем запускает еще одну NSOperation или блок, который выполняет синтаксический анализ и построение отношений.
Представьте себе этот порядок событий:
- Пользователь выполняет некоторые действия (нажатие кнопки и т. Д.)
- Селектор для этого действия запускает два сетевых запроса
- Когда оба запроса завершены (они оба уведомляют общего делегата), запустите операцию разбора
Может выглядеть примерно так в коде:
- (IBAction)someAction:(id)sender {
//fire both network requests
request1.delegate = aDelegate;
request2.delegate = aDelegate;
}
//later, inside the implementation of aDelegate
- (void)requestDidComplete... {
if (request1Finished && request2Finished) {
NSOperation *parse = //init with fetched data
//launch on queue etc.
}
}
Существует два основных подводных камня, к которым склонно это решение:
- Хранит весь набор данных в памяти до тех пор, пока оба запроса не будут завершены.
- Вам придется постоянно включать конкретный запрос, вызывающий вашего делегата (для обработки ошибок, успеха и т. Д.)
По сути, вы реализуете зависимости операций самостоятельно, хотя, возможно, из-за структуры NSURLConnection не обойтись без нее.