我正在开展一个项目,我可以在其中查看控制器,每个项目都基于核心数据和UITableView
。我有保存问题,当我们编辑表时,我们应该存储当前信息和数据。接下来,如果用户点击“保存”按钮,一切都应该进入masterContext
类中的appDelegate
(只有这样,所以我们无法在masterContext中保存动态!)。
我的问题如下。如果用户点击了保存按钮将其传递给masterContext
,如何保存当前数据?我应该创建temporaryContext
,还是将其与masterContext
合并?
感谢您的回答。
答案 0 :(得分:0)
根据您的问题,您不需要拥有多个上下文,然后与主要上下文共享更改。仅使用您在不同控制器之间共享的主上下文。通常这没关系。
这两种方法都有效。
第一种方法意味着您可以在控制器之间传递上下文作为一种“代码注入”。
controller1.masterContext = [self masterContext];
其中masterContext
是strong
的{{1}}属性。
第二种方法意味着在您设置Core Data堆栈(通常是应用程序委托)的类中,您提供了controller1
,您可以通过它来访问上下文。您还可以提供readonly property
方法来保存上下文。我不太喜欢将所有设置代码放在应用程序委托中,因此,我通常会为此创建一个单例类。 DCTCoreDataStack就是一个例子。
如果您对此感兴趣,还可以在Core Data中使用新的iOS 5 API,并设置一个在私有队列(save
)中工作的主上下文和一个在主线程上工作的子({{1 }})。这称为父/子上下文。在主线程中完成的更改将传递给主服务器,该主服务器将保存CD存储库中的更改。这里有一些说明。 PASSING AROUND A NSMANAGEDOBJECTCONTEXT ON IOS。另外,请查看Core Data Release Notes以获得完整的解释。