我的核心数据堆栈像往常一样在AppDelegate中设置。我是一个好的OO公民,并且认识到通过[[UIApplication sharedApplication] delegate] managedObjectContext]直接访问它(或将它移动到某个单例)是全局状态/代码气味/淘气。
但是需要访问数据的控制器大约有五层。容器控制器、模态和熊在其间。我是否应该简单地将上下文传递到每一层,以便最后一个屏幕可以显示出实体列表?这似乎限制了可重用性,增加了复杂性,降低了可理解性。
发布于 2014-07-17 08:35:57
是的,你应该按照苹果的建议来传递它。然而,在某些情况下,我很懒,只是从App委托那里拿到了它,因为我没有做任何多线程计算。我大部分时间都在尝试遵循苹果的指导原则,并确保默认地传递上下文,所以如果我需要更低的上下文,我可以使用它。
“视图控制器通常不应该从全局对象(如应用程序委托)中检索上下文-这会使应用程序体系结构变得僵化。”
查看苹果推荐的https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/stack.html的iOS信息
发布于 2014-07-17 08:44:54
看看Magical Record,它为各种核心数据的典型用例提供了许多方便的方法。
有了它,你不需要手动跟踪你的上下文,方便的方法以线程安全的方式自动访问它(它们)。
它还支持背景模型保存和较少的沸腾取回。
https://stackoverflow.com/questions/24793017
复制相似问题