存储临时Core Data上下文并保存

时间:2013-01-04 08:39:00

标签: ios core-data nsmanagedobjectcontext

我正在开展一个项目,我可以在其中查看控制器,每个项目都基于核心数据和UITableView。我有保存问题,当我们编辑表时,我们应该存储当前信息和数据。接下来,如果用户点击“保存”按钮,一切都应该进入masterContext类中的appDelegate(只有这样,所以我们无法在masterContext中保存动态!)。

我的问题如下。如果用户点击了保存按钮将其传递给masterContext,如何保存当前数据?我应该创建temporaryContext,还是将其与masterContext合并?

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

根据您的问题,您不需要拥有多个上下文,然后与主要上下文共享更改。仅使用您在不同控制器之间共享的主上下文。通常这没关系。

这两种方法都有效。

  • 通过接力棒方法
  • 创建一个可以检索上下文的单例类

第一种方法意味着您可以在控制器之间传递上下文作为一种“代码注入”。

controller1.masterContext = [self masterContext];

其中masterContextstrong的{​​{1}}属性。

第二种方法意味着在您设置Core Data堆栈(通常是应用程序委托)的类中,您提供了controller1,您可以通过它来访问上下文。您还可以提供readonly property方法来保存上下文。我不太喜欢将所有设置代码放在应用程序委托中,因此,我通常会为此创建一个单例类。 DCTCoreDataStack就是一个例子。

<{3}}中的@MarcusZarra还展示了一些传递上下文的技巧。

如果您对此感兴趣,还可以在Core Data中使用新的iOS 5 API,并设置一个在私有队列(save)中工作的主上下文和一个在主线程上工作的子({{1 }})。这称为父/子上下文。在主线程中完成的更改将传递给主服务器,该主服务器将保存CD存储库中的更改。这里有一些说明。 PASSING AROUND A NSMANAGEDOBJECTCONTEXT ON IOS。另外,请查看Core Data Release Notes以获得完整的解释。