当调用context.reset()时,上下文中的其他NSManagedObjects会如何处理?

我遇到一种情况,即一个实体与其他实体有很多关系。我在实体的NSManagedObject中进行了一些更改,并放弃了这些更改。

现在,我在每个相关实体上依次调用managedobjectcontext.refresh(entity,mergeChanges: false)managedobjectcontext.refresh(relatedEntity,mergeChanges: false),以确保上下文中没有悬空的对象。

如果我直接致电managedobjectcontext.reset(),会有什么区别?我是否仍需要刷新或标记零个相关实体?

有什么办法可以使代码更优化?

iCMS 回答:当调用context.reset()时,上下文中的其他NSManagedObjects会如何处理?

如果调用reset,则还需要立即停止使用从该上下文中获取的每个托管对象。 reset之后需要重新进行所有提取,因为这会使上下文忘记它已经提取的所有内容。

有多种模式可以更有效地创建您所描述的可放弃的更改。一种流行的选择是:

  1. 创建一个新的管理对象上下文,并将其作为当前上下文的子上下文。
  2. 在这种情况下进行更改。
  3. 如果要保存更改,请保存。如果没有,那就不要打扰。子上下文将被释放,其更改将丢失。
本文链接:https://www.f2er.com/2123000.html

大家都在问