MVC友好的核心数据方法

时间:2011-10-26 17:47:06

标签: iphone objective-c model-view-controller core-data architecture

好的,所以我对Core Data很陌生,现在我开始深入研究它,我对实现它的正确方法有疑问。

我有一个从appDelegate加载的parentViewController对象。 parentView是一个视图,它为另外三个viewController对象设置了一个分页UIScrollView,它是子对象。视图加载,我可以很好地在三个视图之间进行分页。

所有三个视图都需要与Core Data进行大量数据交换。我应该将managedObjectContext的引用传递给parentView中的每个不同视图,以便所有视图都可以从Core Data本身获取和写入吗?或者我应该在parentView中保留引用,并让子代理将请求传递给父代来处理?

谢谢

2 个答案:

答案 0 :(得分:0)

我通常使用第三个选项,至少对于我在应用程序的整个生命周期中访问的具有单个持久性存储的简单应用程序:使managedObjectContext成为应用程序委托的属性,并在应用程序启动时初始化它。然后,您可以使用以下内容从应用程序的任何位置访问它:

MyApplicationDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *moc = [delegate managedObjectContext];

这种方法并不适用于所有设计和架构,但我发现它对我来说效果很好,并且使我的代码相对干净。

答案 1 :(得分:0)

控制器不应该在MVC中直接相互通信。需要在控制器之间共享的任何数据都应该通过模型层共享,其中MOC是其中的一部分。因此,理想情况下,您应该将MO​​C传递给需要使用它的每个对象。完全可以让多个对象同时读/写同一个MOC;尊重依赖注入的原则;并且写入的代码可能更少。