0

我正在开发一个项目,其中有许多视图控制器,每个控制器都基于核心数据和UITableView. 我在保存时遇到问题,当我们编辑表格时,我们应该存储当前信息和数据。接下来,如果用户点击“保存”按钮,所有内容都应该进入课堂(只有这样,我们才能masterContextappDelegatemasterContext 中动态保存!)。

我的问题如下。如果用户点击了保存按钮,我如何保存当前数据masterContext?我应该创建temporaryContext它而不是与它合并masterContext吗?

感谢您的回答。

4

1 回答 1

0

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

这里有两种方法是有效的。

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

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

controller1.masterContext = [self masterContext];

masterContextstrong属性在哪里controller1

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

@MarcusZarra 在IOS上传递 NSMANAGEDOBJECTCONTEXT中还展示了一些传递上下文的技术。

如果有兴趣,您还可以在 Core Data 中使用新的 iOS 5 API,并设置一个在私有队列 ( NSPrivateQueueConcurrencyType) 中工作的主上下文和一个在主线程 ( NSMainQueueConcurrencyType) 上工作的子上下文。这称为父/子上下文。在主线程中完成的更改将传递给将更改保存在 CD 存储中的主线程。这里有一些注意事项。核心数据发行说明。此外,请查看Multi-Context CoreData以获得完整的解释。

于 2013-01-04T09:22:08.503 回答