【问题标题】:what's the difference between NSManagedObjectContext reset and rollback?NSManagedObjectContext 重置和回滚有什么区别?
【发布时间】:2012-01-09 08:00:30
【问题描述】:

文档说:

- (void)reset

将接收器返回到其基本状态。

讨论

所有接收者的管理对象都被“遗忘”了。如果使用此方法,则应确保同时丢弃​​对使用接收器获取的任何托管对象的引用,因为之后它们将无效。


- (void)rollback

从撤消堆栈中删除所有内容,丢弃所有插入和删除,并将更新的对象恢复到它们上次提交的值。

讨论

此方法不会从一个或多个持久存储重新获取数据。

似乎在我对上下文进行了一些更改之后,调用这两个方法将做完全相同的事情:丢弃更改并将更新的对象恢复到它们最后提交的值。那么-reset到底是做什么的呢?

【问题讨论】:

    标签: objective-c core-data nsmanagedobjectcontext


    【解决方案1】:

    关键部分在报价中

    所有接收者的管理对象都被“遗忘”了。

    - (void)reset; 将为您提供一个干净的NSManagedObjectContext,其中没有任何对象,并且正如文档所述,您周围的任何NSManagedObject 都应该被丢弃,因为它们不再有效。

    - (void)rollback 只会将NSManagedObject 恢复为它们的持久值

    【讨论】:

      【解决方案2】:

      -reset-rollback 的不同之处在于它使从上下文中获取的任何NSManagedObjects 无效。尝试使用这些对象可能会引发异常。然而-rollback 只是丢弃未保存的更改。

      【讨论】:

      • 嗨凯文巴拉德,一个小问题......有没有办法在保存托管对象上下文后恢复更改?
      猜你喜欢
      • 2021-04-06
      • 2012-12-24
      • 2017-02-17
      • 2011-09-27
      • 2013-04-22
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多