致命错误:init(coder:)未被实现 Xcode 7 iOS 9

3

昨晚我更新了一个Xcode 6 / iOS 8项目,似乎遇到了一些问题。其中之一就是它会抛出致命错误消息并导致应用程序崩溃。当按下按钮时,我正在尝试设置下一个。

let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("gameViewController") 
self.presentViewController(viewController, animated: true, completion: nil)

然后在gameViewController中,我有以下内容:

required init(coder aDecoder: NSCoder) {
    // SWIFT 2 update
    state = .OptionsVisible
    super.init(coder: aDecoder)!
    //fatalError("init(coder:) has not been implemented")
}

这似乎是致命错误的抛出位置,因为错误信息如下:

fatal error: init(coder:) has not been implemented: file /pathToApp/GameOptionsViewController.swift, line 81

在更新所有东西的最新版本之前,这些都似乎工作得很好,但我不确定发生了什么变化。


你从gameViewController发布了一个初始化器,但警告是关于GameOptionsViewController的。你确定你正在查看正确的文件吗? - Adam
将您的项目从Swift 1.2转换为Swift 2.0应该会自动解决此问题。您是否使用Xcode进行了项目转换?顺便说一句,Matt给您的答案是正确的!启动Swift 1.2到2.0转换器 - Gerrit Post
是的,我使用Swift进行了升级,但这对我并没有解决问题...很奇怪。 - icekomo
1个回答

8

请将其改写为如下形式:

required init?(coder aDecoder: NSCoder) {
    state = .OptionsVisible
    super.init(coder: aDecoder)
}

注意第一行中的问号和最后一行中缺少感叹号。

这个函数实例中的“?”是什么作用? - icekomo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接