传递NSManagedObjectContext

时间:2014-07-17 00:26:10

标签: ios objective-c cocoa-touch core-data

我的核心数据堆栈照常在AppDelegate中设置。我是一个优秀的OO公民并且认识到通过[[UIApplication sharedApplication] delegate] managedObjectContext]直接访问它(或将其移动到某个单身人士)是全局状态/代码嗅觉/顽皮。

但是需要访问数据的控制器大约有五层深度。中间有容器控制器和模态和空间。我是否应该简单地将上下文传递到每一层,以便最后一个屏幕可以吐出实体列表?这似乎限制了可重用性,增加了复杂性并降低了可理解性。

2 个答案:

答案 0 :(得分:1)

是的,你应该根据Apples推荐传递它。但是我在某些情况下一直很懒,只是把它从App委托中删除了,因为我没有做任何多线程计算。我大部分时间都试着坚持苹果的指导,并确保我默认通过上下文,所以如果我需要它更低,我就拥有它。

"视图控制器通常不应从全局对象(例如应用程序委托)中检索上下文 - 这会使应用程序体系结构变得僵硬。"

查看Apple推荐的https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/stack.html

的iOS信息

答案 1 :(得分:0)

查看Magical Record,它为各种核心数据典型用例提供了许多便捷方法。

有了它,你不需要手动跟踪你的上下文,方便的方法以线程安全的方式自动访问它(它们)。

它还支持背景模型保存和更少的锅炉取样。