我的核心数据堆栈照常在AppDelegate中设置。我是一个优秀的OO公民并且认识到通过[[UIApplication sharedApplication] delegate] managedObjectContext]
直接访问它(或将其移动到某个单身人士)是全局状态/代码嗅觉/顽皮。
但是需要访问数据的控制器大约有五层深度。中间有容器控制器和模态和空间。我是否应该简单地将上下文传递到每一层,以便最后一个屏幕可以吐出实体列表?这似乎限制了可重用性,增加了复杂性并降低了可理解性。
答案 0 :(得分:1)
是的,你应该根据Apples推荐传递它。但是我在某些情况下一直很懒,只是把它从App委托中删除了,因为我没有做任何多线程计算。我大部分时间都试着坚持苹果的指导,并确保我默认通过上下文,所以如果我需要它更低,我就拥有它。
"视图控制器通常不应从全局对象(例如应用程序委托)中检索上下文 - 这会使应用程序体系结构变得僵硬。"
的iOS信息答案 1 :(得分:0)
查看Magical Record,它为各种核心数据典型用例提供了许多便捷方法。
有了它,你不需要手动跟踪你的上下文,方便的方法以线程安全的方式自动访问它(它们)。
它还支持背景模型保存和更少的锅炉取样。