ios - 传递一个 NSManagedObjectContext

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

我的核心数据堆栈像往常一样在 AppDelegate 中设置。我是一个优秀的 OO 公民,并认识到可以通过 [[UIApplication sharedApplication] delegate] managedObjectContext] 直接访问它(或将其移动到某个单例)是全局状态/代码气味/顽皮。

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

最佳答案

是的,您应该按照 Apple 的建议传递它。然而,在某些情况下我一直很懒惰,只是从 App 委托(delegate)中获取它,因为我没有做任何多线程计算。我大部分时间都在尝试坚持苹果的指导方针,并确保我默认传递上下文,所以如果我需要它更低,我就拥有它。

“ View Controller 通常不应从全局对象(例如应用程序委托(delegate))中检索上下文——这会使应用程序架构变得僵化。”

查看苹果推荐的iOS资料https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/stack.html

关于ios - 传递一个 NSManagedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793017/

相关文章:

iphone - 地址可达性 - 服务器和端口 - iOS 5

ios - 谷歌地图GMS标记警告

ios - 在 iOS 设备上拍摄照片和视频

objective-c - 检查并删除 NSSet 中的对象

ios - Realm 将数据附加到类型 List<t>

ios - 用于iOS React-native的Facebook SDK无法构建

ios - ARKit 图像识别黑白

ios - 通过 View 传递数据

ios - 禁用的 UIButton 不褪色或灰色

ios - 启动 Watchkit 扩展时出错