我正在开发一个使用Core Data的项目。但是,RootViewController不使用它。我的应用程序中的第一个ViewController是注册或登录屏幕。只有在用户注册或登录后,才会将它们带到需要Core Data的应用程序的初始屏幕(因此,ManagedObjectContext)。我想使用的核心数据堆栈如下:
scanf(" %c, &cough)
我的问题是,如何设置我的核心数据堆栈,并通过依赖注入,绕过负责登录/注册的第一个视图控制器,并将ManagedObjectContext的值分配给ViewController的属性,需要它(这是UITableViewController)?另外请记住,我没有使用故事板,因此上述方法也需要进行修改以消除它的使用。
答案 0 :(得分:2)
即使根视图控制器不使用上下文也不意味着它不能负责依赖注入。
我会将容器直接通过根视图控制器。
答案 1 :(得分:-4)
AppDelegate是一个可以从应用程序的任何部分获得的单例,因此代替依赖注入,您可以在ViewController初始化期间从AppDelegate获取上下文,就像那样(在这种情况下mainContext
是AppDelegate的延迟初始化属性来自持久容器的上下文):
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let managedObjectContext = appDelegate.mainContext