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

时间:2016-06-07 16:34:06

标签: 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'函数中发送它。因此,只有第一个视图包含上面的代码,而其他所有内容都只有var moc: NSManagedObjectContext?才能从prepareForSegue函数设置。

但是我学的越多,我就开始认为AppDelegate正在创建实际的managedObjectContextlet moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext行只是将managedObjectContext设置为moc变量,并且实际上没有制作新的managedObjectContext

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

这非常好,因为它不会创建新的上下文,而只是为您提供对相同上下文的新引用。事实上,它与“在'prepareForSegue'函数中发送原始moc变量没有任何区别”。你用两种不同的方式做同样的事情,就是这样。

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