【发布时间】:2016-06-07 16:34:05
【问题描述】:
我想知道执行managedObjectContext 的最佳做法是什么。今年早些时候,当我第一次开始学习 swift / iOS / Xcode 时,我在 ViewControllers / TableViewControllers 的每个课程中都使用了这一行。
let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
一切正常。但后来我想我在某个时候读到了一些东西,说对每个 ViewController / TableViewController 使用相同的managedObjectContext。我将其解释为将我的原始 moc 变量发送到每个 ViewController / TableViewController。为此,我开始在“prepareForSegue”函数中发送它。所以只有第一个视图有上面的代码,其他的只有var moc: NSManagedObjectContext?,可以从prepareForSegue函数中设置。
但是我学到的越多,我开始认为 AppDelegate 正在创建实际的 managedObjectContext,而 let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 行只是将 managedObjectContext 设置为 moc 变量,而不是实际创建一个新的 @ 987654330@.
那么我应该继续使用prepareForSegue 函数将我的 moc 变量发送到所有链接的 ViewControllers / TableViewControllers,还是应该不用担心并使用顶部的代码进行设置?
谢谢。
【问题讨论】:
-
您几乎可以肯定 AppDelegate 创建一个对象并向您传递一个引用是正确的。 在我看来,尽管如此,视图控制器确实不应该知道如何获取数据的机制。您可能想查看 MVC 结构,其中 Model 对象负责数据和控制器与其通信、发送更改和接收当前状态。
-
如果您有兴趣,您可以观看realm.io/news/slug-marcus-zarra-exploring-mvcn-swift 简要提及处理
managedObjectContext的不同方法,但会谈到您关于应用架构的更大问题。 -
谢谢,我一定会的!
标签: ios swift2 xcode7 nsmanagedobjectcontext