我尝试通过在应用程序启动时将其注入到RootViewController中,在AppDelegate.swift的didFinishLaunchingWithOptions中创建一次RootViewModel实例,因此它不会被多次创建。
这是代码片段:
...
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
guard let rootViewController = window?.rootViewController as? RootViewController else {
fatalError("Unable to Instantiate the root view controller")
}
let rootViewModel = RootViewModel()
rootViewController.viewModel = rootViewModel
return true
}
...
RootViewModel是一个基本的swift 类,还没有实现,而RootViewController有一个可选的viewModel属性来允许注入。
var viewModel: RootViewModel?
这是我的问题:每次运行应用程序时,它都会停在我创建的fatalError处,以了解创建rootViewController是否一切顺利。所以,这意味着一切都不顺利。
我认为在创建rootViewController时 window 属性仍然为空,但我不知道如何解决这个问题。
我尝试在SceneDelegate中创建相同的东西,但没有成功。
我可以做些什么来解决这个问题?我正在使用 XCode 12.5 版