gpt4 book ai didi

ios - 尝试使用依赖注入(inject)设置核心数据堆栈

转载 作者:行者123 更新时间:2023-12-01 18:37:55 25 4
gpt4 key购买 nike

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

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var persistentContainer: NSPersistentContainer!
var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
createContainer { container in
self.persistentContainer = container
let storyboard = self.window?.rootViewController?.storyboard
guard let vc = storyboard?.instantiateViewController(withIdentifier: "RootViewController") as? RootViewController
else { fatalError("Cannot instantiate root view controller") }
vc.managedObjectContext = container.viewContext
self.window?.rootViewController = vc
}
return true
}

func createContainer(completion: @escaping (NSPersistentContainer) -> ()) {
let container = NSPersistentContainer(name: "MyDataModel")
container.loadPersistentStores { _, error in
guard error == nil else { fatalError("Failed to load store: \(error)") }
DispatchQueue.main.async { completion(container) }
}
}

}

我的问题是,我如何设置我的核心数据堆栈,并通过依赖注入(inject),绕过第一个负责登录/注册的 View Controller ,并将 ManagedObjectContext 的值分配给需要它的 ViewController 的属性(哪个是 UITableViewController)?另外请记住,我没有使用 Storyboard ,因此还需要修改上述方法以消除它的使用。

最佳答案

  • 应用程序委托(delegate)应该将上下文(或上下文的容器)注入(inject) Root View Controller 。
  • Root View Controller 应将上下文注入(inject)其子级。

  • 即使 Root View Controller 不使用上下文并不意味着它不能负责依赖注入(inject)。

    我将容器直接通过 Root View Controller 。

    关于ios - 尝试使用依赖注入(inject)设置核心数据堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48729245/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com