В чем разница между сбросом NSManagedObjectContext и откатом? - PullRequest
20 голосов
/ 30 ноября 2011

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

- (void)reset

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

Обсуждение

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


- (void)rollback

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

Обсуждение

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

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

Ответы [ 2 ]

40 голосов
/ 30 ноября 2011

Ключевая часть в цитате

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

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

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

12 голосов
/ 30 ноября 2011

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

...