属性'self.menuViewController'未在super.init调用时初始化

时间:2017-05-30 23:36:05

标签: ios swift uiview viewcontroller

我在viewController上遇到了这个错误,并且不确定它为什么会发生。控制器目前设置如下:

class ContainerViewController: UIViewController {

  init(sideMenu: UIViewController, center: UIViewController) {
    menuViewController = sideMenu
    centerViewController = center
    super.init(nibName: nil, bundle: nil)
  }

  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)// This is where the error happens
  }

}

有任何线索可能会发生这种情况吗?

1 个答案:

答案 0 :(得分:4)

错误发生在第二个初始化程序中,因为该属性尚未初始化。所有不可选且不具有默认值的属性必须在每个初始化程序中单独初始化,因为只有该特定初始化程序实际运行(除非它明确地调用另一个)。

如果您正在使用fatalError初始值设定项,则需要在其中为其指定值或使其成为可选值。如果您实际上没有实现该初始化程序,请将其保留为@Database(entities = {Event.class}, version = 2) @TypeConverters(DateTypeConverter.class) public abstract class EventDatabase extends RoomDatabase { public abstract EventDao eventDao(); } 默认值,因为如果它已经运行,则表示无论如何都会出现可怕的错误。