【问题标题】:is a separate NSManagedObjectContext required to roll back coredata changes the user does not OK?是否需要一个单独的 NSManagedObjectContext 来回滚用户不正确的 coredata 更改?
【发布时间】:2011-12-01 23:15:18
【问题描述】:

是否需要一个单独的 NSManagedObjectContext 来回滚用户不正确的 coredata 更改?

我在CoreDataBooks example 中注意到它使用了一个单独的 NSManagedObjectContext。想问的是,这是否是处理需求的唯一真正方法,如果不是,另一种方法是什么。

要求是:

  • 允许用户开始更改页面上对象中的字段
  • 这可能包括传递给单独的模态视图以帮助他们设置这些数据
  • 提供 OK 或 CANCEL 是否重新进行更改
  • 作为进行更改的一部分,您仍然继续使用 CoreData 托管对象(即不创建单独的一组对象/方法来处理此问题)
  • 因此,如果您想坚持使用现有的核心数据对象,然后支持 OK 和 CANCEL 更改,那么通过单独的第二个 NSManagedObjectContext 实现此目的的唯一方法是什么?

示例摘录供参考

创建一个新书,一个 AddViewController 来管理添加 书,以及添加控制器要保留的新托管对象上下文 对图书所做的更改与应用程序的托管无关 对象上下文,直到书被保存。重要提示:没有必要 为此使用第二个上下文。你可以只使用现有的 上下文,这将简化一些代码——你不需要 例如,在保存后合并更改。然而,这个实现, 说明有时可能有用的模式(您想要 维护一组单独的编辑)。

【问题讨论】:

    标签: iphone ios core-data nsmanagedobject nsmanagedobjectcontext


    【解决方案1】:

    创建一个单独的NSManagedObjectContext 是迄今为止处理您描述的情况的最简单方法。如果您想在单独的线程上进行更改,这也是唯一的方法。

    请务必在保存期间使用-[NSManagedObjectContext mergeChangesFromContextDidSaveNotification:(NSNotification *)notification] 以保持您的主要NSManagedObjectContext 正确同步。

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 2011-12-11
      • 2012-07-10
      相关资源
      最近更新 更多