是一个单独的NSManagedObjectContext,需要回滚coredata更改用户不行吗?

时间:2011-12-01 23:15:18

标签: iphone ios core-data nsmanagedobject nsmanagedobjectcontext

是否需要单独的NSManagedObjectContext来回滚coredata更改,用户不行?

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

要求是:

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

从参考文献中提取

  

创建一本新书,一个AddViewController来管理添加   book,以及添加控制器要保留的新托管对象上下文   对该书的更改与应用程序的管理不同   对象上下文直到书籍保存。重要提示:没有必要   为此使用第二个上下文。你可以使用现有的   上下文,这将简化一些代码 - 你不需要   例如,在保存后合并更改。但是,这个实现,   说明了一种有时可能有用的模式(你想要的地方)   保持一组单独的编辑。)

1 个答案:

答案 0 :(得分:1)

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

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