#ios #objective-c #core-data
#iOS #objective-c #core-data
Вопрос:
Я использую родительско-дочерний контекст, синхронизирующий данные с cloud kit. Я столкнулся с проблемой перезаписи дочерних родительских данных. Я знаю, что это так работает, но можно ли что-нибудь сделать?
Ниже приведен точный сценарий.
Модель
- Родительский объект: A
- Дочерняя сущность: B
A->> B — это отношение «один ко многим».
Контекст:
-
Родительский контекст (MOC): — Используется пользователями для работы с CRUD.
-
Дочерний MOC (CMOC): — Используется для синхронизации данных из cloud kit.
Senario:
- Родительский элемент удаляется из дочернего контекста
- Дочерний элемент для этого родителя вставляется в родительский контекст.
Если происходит сохранение дочернего элемента, он перезаписывает родительский moc, оставляя только что вставленный дочерний элемент без родительского элемента.
Таким образом, остается дочерний элемент, у которого нет никакого ссылочного родителя.
Ответ №1:
Когда родительский элемент удаляется из дочернего контекста, он также будет удален из родительского контекста при выполнении сохранения. Изменения из дочерних контекстов распространяются на родительский контекст. Это сделано специально.
Чего вы пытаетесь достичь? Может быть другой способ.
Комментарии:
1. Чего вы пытаетесь достичь?
2. Да, @oyalhi, так задумано. Я хочу, чтобы дочерние записи не оставались в БД без родительского элемента. При удалении родительского я проверяю (NSfetch), что в них нет дочерних записей. Но если дочерний элемент сохраняется после этого шага, то дочерний контекст не имеет никакого представления об этом вновь вставленном дочернем элементе в родительском контексте, и поэтому, когда дочерний контекст сохраняется, он удаляет родительский элемент, оставляя вновь вставленную дочернюю связь с родительским элементом как NULL. Итак, я хочу знать, есть ли какой-либо способ, которым этого можно избежать.