首页 > 解决方案 > 将 UITabBarController 设置为根视图控制器时如何在应用程序委托中修复“意外发现 nil”

问题描述

在此处输入图像描述根据屏幕截图,我试图将 UITabBarController 设置为我的根视图控制器。在故事板中,UITabBarController 是我最初的 VC,但是我遇到了这个问题。

如果标签栏控制器是我的初始视图控制器,我检查情节提要,如果我搞砸了任何东西。

        let tabController = window!.rootViewController as! UITabBarController
        if let tabViewControllers = tabController.viewControllers {
            let navController = tabViewControllers[0] as! UINavigationController
            let controller = navController.viewControllers.first as! CurrentLocationViewController
            controller.managedObjectContext = managedObjectContext
        }
        return true
    }

预期:要顺利运行实际结果:应用程序启动,启动时崩溃。我收到以下错误:线程一个致命错误:在展开可选时意外发现 nil。

标签: iosswiftxcode

解决方案


该行正在崩溃,因为窗口为 nil 或视图控制器不是 UITabBarController。如果您删除 didFinishLaunchingWithOptions 中的代码,您的应用程序是否会在不崩溃的情况下加载并显示您期望的视图控制器?

如果是这样,也许可以尝试移动代码以在 CurrentLocationViewController 的 viewDidLoad 方法中设置托管对象上下文:

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

如果应用程序仍然崩溃或未显示您期望的选项卡式视图控制器,则您可能没有正确设置初始视图控制器。


推荐阅读