Как обрабатывать отношения один-ко-многим в ОСНОВНЫХ ДАННЫХ

У меня проблема с основными данными, когда я использую отношения как один к одному, так и один ко многим.

1. Давайте рассмотрим родительскую сущность P1 и дочерние объекты C1 , C2 , C3 ,

2. C3 имеет еще 3 дочерних объекта C31 , C32 , C33 ,

3. Если я обновляю или удаляю или изменяю C32 таблица, я получу полный JSON с сервера для родителя P1 ,

Есть ли способ изменить все дочерние таблицы конкретной родительской таблицы? По сути, если в дочерних таблицах выполняется какое-либо обновление, удаление или изменение, я получу новую родительскую таблицу со всеми подробностями дочерних таблиц с сервера.

Есть ли способ справиться с этим в основных данных?

1 ответ

Решение

Больше, чем обработка отношений в Core Data, вы задаетесь вопросом о том, как поддерживать синхронизацию удаленной базы данных, предоставляемой через API на основе JSON и локальное зеркало Core Data.

Наивный путь в изображенном вами сценарии:

  1. вы получаете полный JSON с сервера;

  2. при этом идентифицируйте свою родительскую сущность (например, на основании ее идентификатора);

  3. удалить родительский объект из вашей локальной базы данных; если вы правильно настроите свою модель, все дети также будут удалены;

  4. создать сущность заново со всеми ее детьми.

Другой возможный подход: вы получаете полный JSON, затем сравниваете каждого дочернего элемента в JSON с каждым дочерним элементом в базовых данных и удаляете тех, которых нет в JSON.

Наконец, вы могли бы принять во внимание RestKIT, который является структурой, которая сделает всю эту работу за вас - есть некоторая кривая обучения, но она будет обрабатывать все детали для вас.

Другие вопросы по тегам