文档说:
- (void)reset
将接收器返回其基本状态。
讨论
所有接收方的托管对象都被“遗忘”。如果您使用此方法,则应确保您也放弃对使用接收方获取的任何托管对象的引用,因为它们之后将无效。
- (void)rollback
从撤消堆栈中删除所有内容,放弃所有插入和删除,并将更新的对象恢复为其上次提交的值。
讨论
此方法不会从持久性商店或商店中重新获取数据。
似乎在对我的上下文进行一些更改后,调用这两个方法将完全相同:丢弃更改并将更新的对象恢复为其上次提交的值。那么-reset
实际上做了什么?
答案 0 :(得分:39)
关键部分在引用
中所有接收者的管理对象都被“遗忘”。
- (void)reset;
将为您提供一个干净的NSManagedObjectContext
,其中没有任何对象,并且文档说明您拥有的任何NSManagedObject
应该被丢弃,因为它们不再有效。< / p>
- (void)rollback
只会将NSManagedObject
恢复为其持久值
答案 1 :(得分:12)
-reset
与-rollback
不同,因为它会使从上下文中提取的任何NSManagedObject
无效。试图使用这些对象可能会引发异常。但是-rollback
只会丢弃未保存的更改。