UIViewController 和所需的初始化?(编码器:)

Posted

技术标签:

【中文标题】UIViewController 和所需的初始化?(编码器:)【英文标题】:UIViewController and required init?(coder: ) 【发布时间】: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 中初始化板。显然它不起作用。任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

删除

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

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

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

【讨论】:

谢谢,它有效。这条线应该在那里吗?还是有一些我们选择忽略的错误?

以上是关于UIViewController 和所需的初始化?(编码器:)的主要内容,如果未能解决你的问题,请参考以下文章

我们如何确定 ffmpeg 所需的依赖项

Kubernetes 集群所需的端口

正在实现表功能所需的 UITableViewDataSource 协议

无法将文本文件读入所需的数组格式

iphone响应程序链中操作方法所需的可见性是啥?

echarts使用方法