Использование RestKit с основными данными Я предоставляю автономную поддержку, когда пользователь добавляет, редактирует или удаляет объекты без подключения к Интернету, отмечая объекты и сохраняя их с основными данными.
Если снова доступен ИнтернетЯ извлечу все добавленные / отредактированные / удаленные объекты, сохраню их в массивах и сразу пойму, используя обычные методы и цикл для каждого элемента, чтобы поместить их на сервер.
Список массивов
- fetchedAddedCompanies
- fetchedEditedCompanies
- fetchedAddedContacts
- fetchedEditedContacts
- fetchedDeletedContacts
Метод инициализации (пример для отредактированных компаний)
// Added Companies
...
// Edited Companies
for (Company *tempObj in fetchedAddedCompanies)
{
// Find keys for selected languages
[self updateAccountToServer:tempObj:addCompanyContext];
}
// ...
В конце updateAccountToServer Я публикую объект (self.company) с его сопоставлением на сервере.
...
[objectManager postObject:self.company mapResponseWith:[companyMapper inverseMapping] delegate:self];
...
Вопрос
I 'Я ищу более эффективное решение, когда пользователь обновил несколько объектов и - что особенный - добавил несколько новых объектов, потому что в отличие от всего редактирования/ удаляя методы, сервер возвращает идентификатор для каждого нового созданного объекта, который будет сохранен.
1) Избегайте использования, например, updateAccountToServer для каждого отредактированного объекта и вместо этого отправляйте массив объектов
2) Использование RKRequestQueue вместе с RKObjectManager ( относительно этого вопроса и хорошим ответом )
По моему мнению 1) будет трудно реализовать, потому что resourcePath длякаждый запрос содержит уникальный идентификатор, поэтому я попробовал 2), но упустил возможность привязывать сопоставление для каждого запроса , используя
[syncQueue addRequest:[[RKObjectManager sharedManager] objectLoaderWithResourcePath:tempString delegate:self]];
Спасибо за ваши идеи!