Когда и как часто вызывать processPendingChanges для обеспечения целостности графа - PullRequest
4 голосов
/ 19 апреля 2011

У меня есть сущности, которые управляются Core Data, и есть несколько случаев, когда в рамках одного метода я устанавливаю некоторые значения атрибутов, которые приведут к изменениям графика, которые Core Data будут применять, и выполнят дополнительные действия, которые (логически) зависят от состояния обновлениядля графика.

Есть ли причина не вызывать processPendingChanges после каждого установления отношения, чтобы гарантировать, что график всегда полностью обновлен?Когда я это делаю, все работает так, как должно, но, очевидно, это немного "шумно" и прерывает некоторую обработку, которая в противном случае была бы уведомлением (например, извлеченные контроллеры результатов, которые в итоге отправляют партии controllerWillChangeContent / controllerDidChangeContentк их спискам, если в противном случае это произошло бы.)

ДОПОЛНЕНИЕ:

Будет ли график всегда обновляться после возврата из любого метода, который вносит изменения в сущность?

Ответы [ 2 ]

4 голосов
/ 13 октября 2013

Я обнаружил, что перед тем, как проверять удаленные объекты NSManagedObjectContext, нужно вызывать processPendingChanges.По крайней мере, если для некоторых отношений для deleteRule установлено значение NSCascadeDeleteRule.

Если вы не вызываете processPendingChanges, тогда в selectedObjects могут отсутствовать объекты, которые будут удалены каскадом в конце текущего события.

2 голосов
/ 19 апреля 2011

processPendingChanges чаще всего используется в iOS с несколькими контекстами, работающими в отдельных потоках. Он играет большую и более распространенную роль под MacOS.

Обычно в большинстве случаев вам не нужно вызывать его под iOS. Это на самом деле не дает вам большого преимущества и может вызвать задержки в пользовательском интерфейсе при выполнении в основном потоке, если у вас сложный график.

Я бы не стал беспокоиться об этом, если бы тестирование не показало, что вы по какой-то причине теряете целостность графика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...