Что происходит с другими NSManagedObjects в контексте при вызове context.reset ()? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть сценарий, в котором сущность имеет много отношений с другими сущностями. Я внес некоторые изменения в объект NSManagedObject и отменил эти изменения.

Прямо сейчас я вызываю managedObjectContext.refresh(entity, mergeChanges: false), а затем managedObjectContext.refresh(relatedEntity, mergeChanges: false) для каждой связанной сущности, чтобы гарантировать отсутствие висящих объектов в контексте.

Какая будет разница, если я позвоню напрямую managedObjectContext.reset()? Должен ли я по-прежнему обновлять sh или отмечать ноль связанные объекты?

Есть ли способ сделать этот код более оптимизированным?

1 Ответ

0 голосов
/ 17 июня 2020

Если вы вызываете reset, вам также необходимо немедленно прекратить использование каждого управляемого объекта, который вы извлекли из этого контекста. Все выборки должны быть выполнены повторно после reset, потому что это заставляет контекст забыть обо всем, что он уже получил.

Существуют различные шаблоны для более эффективного создания отменяемых изменений, как вы описали. Один из популярных вариантов:

  1. Создать новый контекст управляемого объекта и сделать его дочерним контекстом текущего контекста.
  2. Внесите изменения в этот контекст.
  3. Если вы хотите сохранить изменения, сохраните их. Если нет, просто не беспокойтесь. Дочерний контекст будет освобожден, и его изменения будут потеряны.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...