Как обрабатывать отношения один-ко-многим в ОСНОВНЫХ ДАННЫХ
У меня проблема с основными данными, когда я использую отношения как один к одному, так и один ко многим.
1. Давайте рассмотрим родительскую сущность P1
и дочерние объекты C1
, C2
, C3
,
2. C3
имеет еще 3 дочерних объекта C31
, C32
, C33
,
3. Если я обновляю или удаляю или изменяю C32
таблица, я получу полный JSON с сервера для родителя P1
,
Есть ли способ изменить все дочерние таблицы конкретной родительской таблицы? По сути, если в дочерних таблицах выполняется какое-либо обновление, удаление или изменение, я получу новую родительскую таблицу со всеми подробностями дочерних таблиц с сервера.
Есть ли способ справиться с этим в основных данных?
1 ответ
Больше, чем обработка отношений в Core Data, вы задаетесь вопросом о том, как поддерживать синхронизацию удаленной базы данных, предоставляемой через API на основе JSON и локальное зеркало Core Data.
Наивный путь в изображенном вами сценарии:
вы получаете полный JSON с сервера;
при этом идентифицируйте свою родительскую сущность (например, на основании ее идентификатора);
удалить родительский объект из вашей локальной базы данных; если вы правильно настроите свою модель, все дети также будут удалены;
создать сущность заново со всеми ее детьми.
Другой возможный подход: вы получаете полный JSON, затем сравниваете каждого дочернего элемента в JSON с каждым дочерним элементом в базовых данных и удаляете тех, которых нет в JSON.
Наконец, вы могли бы принять во внимание RestKIT, который является структурой, которая сделает всю эту работу за вас - есть некоторая кривая обучения, но она будет обрабатывать все детали для вас.