【问题标题】:UIViewController and required init?(coder: )UIViewController 和所需的初始化?(编码器:)
【发布时间】:2015-12-20 01:30:03
【问题描述】:

Xcode 不断给我一些运行时错误,例如“致命错误:init(coder:) 尚未实现:file/.../myproject.swift”

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var boardView: UIView!
    @IBOutlet weak var movesLabel: UILabel!
    @IBOutlet weak var timeLabel: UILabel!

    let BOARD_SIZE: Int = 10
    var board: Board 
    var squareButtons: [SquareButton] = []

    required init?(coder aDecoder: NSCoder) {
        self.board = Board(size: BOARD_SIZE)
        super.init(coder: aDecoder)
        fatalError("init(coder:) has not been implemented")
    }
}

由于我们必须在子类中实现所需的 init?(coder:),所以我尝试同时在所需的 init 中初始化板。显然它不起作用。任何建议将不胜感激。

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案1】:

    删除

    fatalError("init(coder:) has not been implemented")
    

    来自required init?(coder aDecoder: NSCoder) 初始化程序的行。此行引发了您的错误。不需要此行。

    XCode 在你创建init?(coder aDecoder: NSCoder) 方法时添加了这一行来提醒开发者实现这个方法或者永远不要调用它。如果开发人员忘记实现它,但会尝试从存档或 Storyboard 实例化一个类,他将收到一个断言,并且能够轻松找到错误。

    【讨论】:

    • 谢谢,它有效。这条线应该在那里吗?还是有一些我们选择忽略的错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多