UIViewController和必需的init?(编码器:)

时间:2015-12-20 01:30:03

标签: ios swift uiviewcontroller

Xcode一直给我一些运行时错误,例如"致命错误:init(编码器:)尚未实现: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中初始化board。显然它不起作用。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

删除

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

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

XCode在您创建init?(coder aDecoder: NSCoder)方法时添加此行以提醒开发人员实现此方法或从不调用它。如果开发人员忘记实现它但会尝试从archive或Storyboard实例化一个类,他将收到一个断言,并且能够轻松找到bug。