ios - 我应该为每个 ViewController Swift 创建一个新的 managedObjectContext

标签 ios swift2 xcode7 nsmanagedobjectcontext

我想知道执行 managedObjectContext 的最佳实践是什么。今年早些时候,当我第一次开始学习 swift/iOS/Xcode 时,我将这一行放在 ViewControllers/TableViewControllers 的每个类中。

let moc = (UIApplication.sharedApplication().delegate as!AppDelegate).managedObjectContext

一切正常。但后来我想我在某个时候读到一些东西说对每个 ViewController/TableViewController 使用相同的 managedObjectContext。我将其解释为将我的原始 moc 变量发送到每个 ViewController/TableViewController。为此,我开始在“prepareForSegue”函数中发送它。因此,只有第一个 View 具有上面的代码,而其他所有 View 都只有 var moc: NSManagedObjectContext? 可以从 prepareForSegue 函数中设置。

但我了解得越多,我开始认为 AppDelegate 正在创建实际的 managedObjectContextlet moc = (UIApplication.sharedApplication().delegate as! AppDelegate) .managedObjectContext 行只是将 managedObjectContext 设置为 moc 变量,而不是实际创建一个新的 managedObjectContext

所以我应该继续使用 prepareForSegue 函数将我的 moc 变量发送到所有链接的 ViewControllers/TableViewControllers,还是我不应该担心它并使用顶部的代码设置它?

谢谢。

最佳答案

let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

这很好,因为它不会创建新的上下文,而只是为您提供对同一上下文的新引用。事实上,它与“在‘prepareForSegue’函数中发送原始 moc 变量”没有任何不同。您正在以两种不同的方式做完全相同的事情,仅此而已。

阅读 Swift 中的值和引用类型:Classes and structures

关于ios - 我应该为每个 ViewController Swift 创建一个新的 managedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684720/

相关文章:

iphone - IBOutlet应该弱了吧?

swift - 确定是否可以安全地杀死 Finder

ios - 如何在 Swift 中清除互联网数据?

swift - 按类型过滤 Swift 数组的奇怪行为

ios - Storyboard因 Xcode 7/Swift 2 错误而崩溃 - 由于缺少入口点而无法访问场景

ios-simulator - 如何在 Xcode 版本 7.1.1 (7B1005) 中安装 iOS 9.1 模拟器

ios - Sprite Kit,移除 Sprite 进行碰撞

ios - Quickblox 视频聊天用户列表未加载

objective-c - 避免 UIKeyboard 和自动布局

swift - 如何获得房间内用户坐姿的准确经纬度值?