在super.init调用中未初始化

时间:2018-12-08 18:32:59

标签: ios

iOS的新功能。

我应该如何解决:

@objc protocol NwNamew {
    init(vm: ViewModel)
}

class ViewController: UIViewController, NwNamew {
    var viewModel: ViewModel

    required init(vm: ViewModel) {
        self.viewModel = vm
        super.init(nibName: nil, bundle: nil)
    }


    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        fatalError("init(coder:) has not been implemented")
    }

获取错误:super.init调用未初始化属性'self.viewModel'

2 个答案:

答案 0 :(得分:0)

在调用super.init(coder:)之前,您必须初始化该类中的所有变量。当您不在类中实现init(coder:)函数时,可以删除此super.init(coder:)调用。这将消除您的编译错误。

答案 1 :(得分:0)

您也可以通过将参数设置为Optional来解决此错误

var viewModel: ViewModel?

可选参数是可以为nil的参数,使用前需要将其解包。 您可以在此处阅读有关可选内容的更多信息:

Optionals