ios - 将 UITabBarController 设置为 Root View Controller 时如何修复应用程序委托(delegate)中的 "Unexpectedly found nil"

标签 ios swift xcode

enter image description here根据屏幕截图,我试图将 UITabBarController 设置为我的 Root View Controller 。在 Storyboard中,UITabBarController 是我最初的 VC,但我遇到了这个问题。

如果选项卡栏 Controller 是我的初始 View Controller ,我会检查 Storyboard ,如果我在打开任何东西时搞砸了。

        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
    }

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

最佳答案

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

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

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

如果应用仍然崩溃或没有显示您期望的选项卡式 View Controller ,则您可能没有正确设置初始 View Controller 。

关于ios - 将 UITabBarController 设置为 Root View Controller 时如何修复应用程序委托(delegate)中的 "Unexpectedly found nil",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759741/

相关文章:

html - Aptana 插件是否帮助我们在 Eclipse 中进行 iphone 开发?

objective-c - 带有 NSWindowController 的 NSPanel 显示在 xcode 中,但不在存档应用程序中

ios - Xcode 7.3.1 上的 SwiftLint 集成,并在 .yml 文件配置的 --config 命令上出错

ios - 从电话号码中查找国家代码

ios - 错误 : SDK "iphonesimulator9.0" Cannot be located

ios - 如何保护密码字段免受恶意输入?

swift - 用户位置被聚类为注释

swift - 为什么我的 SKSpriteNodes 不会出现在场景中?

ios - UIRefreshControl 不执行操作

xcode - 有没有办法阻止 Xcode 在输入一个空括号后插入一个右括号?