尝试使用依赖注入设置Core Data堆栈

时间:2018-02-11 07:15:35

标签: ios swift core-data

我正在开发一个使用Core Data的项目。但是,RootViewController不使用它。我的应用程序中的第一个ViewController是注册或登录屏幕。只有在用户注册或登录后,才会将它们带到需要Core Data的应用程序的初始屏幕(因此,ManagedObjectContext)。我想使用的核心数据堆栈如下:

scanf(" %c, &cough)

我的问题是,如何设置我的核心数据堆栈,并通过依赖注入,绕过负责登录/注册的第一个视图控制器,并将ManagedObjectContext的值分配给ViewController的属性,需要它(这是UITableViewController)?另外请记住,我没有使用故事板,因此上述方法也需要进行修改以消除它的使用。

2 个答案:

答案 0 :(得分:2)

  1. 应用程序委托应将上下文(或上下文的容器)注入根视图控制器。
  2. 根视图控制器应该将上下文注入其子项中。
  3. 即使根视图控制器不使用上下文也不意味着它不能负责依赖注入。

    我会将容器直接通过根视图控制器。

答案 1 :(得分:-4)

AppDelegate是一个可以从应用程序的任何部分获得的单例,因此代替依赖注入,您可以在ViewController初始化期间从AppDelegate获取上下文,就像那样(在这种情况下mainContext是AppDelegate的延迟初始化属性来自持久容器的上下文):

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let managedObjectContext = appDelegate.mainContext