Какая разница между NSManagedObjectContext reset и откатом?

В документации написано:

- (void)reset

Возвращает приемник в его базовое состояние.

Обсуждение

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


- (void)rollback

Удаляет все из стека отмены, отбрасывает все вставки и удаления и восстанавливает обновленные объекты до последних зафиксированных значений.

Обсуждение

Этот метод не возвращает данные из постоянного хранилища или хранилища.

Похоже, что после того, как я внесу некоторые изменения в свой контекст, вызов этих двух методов будет делать то же самое: отказаться от изменений и восстановить обновленные объекты до их последних зафиксированных значений. Итак, что делает -reset на самом деле?

Ответы

Ответ 1

Ключевая часть находится в цитате

Все объекты, управляемые получателем, "забыты".

- (void)reset; предоставит вам чистый NSManagedObjectContext без каких-либо объектов в нем, а поскольку документы docs заявят, что любой NSManagedObject, который у вас есть, должен быть отброшен, поскольку они больше не действительны.

- (void)rollback просто вернет NSManagedObject к их сохраненным значениям

Ответ 2

-reset отличается от -rollback тем, что недействителен любой NSManagedObject, который был выбран из контекста. Можно ожидать, что попытка использовать эти объекты вызовет исключение. Однако -rollback просто отбрасывает несохраненные изменения.