'super.init' isn't called on all paths before returning from initializer

℡╲_俬逩灬. 提交于 2020-01-06 04:51:33

问题


I am new in swift and now i am stuck in inheritance . Here i am using two class class A, and class B . Class B is inheriting some properties of class A . Here is the code .

class A
{
    var objRunningJobs:UIViewController!
    var objCompletedJobs:UIViewController!
    init(objRunningJobs:UIViewController, objCompletedJobs: UIViewController) {
        self.objRunningJobs = objRunningJobs
        self.objCompletedJobs = objCompletedJobs
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

class B: A
{
    override init(objRunningJobs:UIViewController, objCompletedJobs: UIViewController) {
        super.init(objRunningJobs: objRunningJobs, objCompletedJobs: objCompletedJobs)
    }

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

In class A , after init i am getting the error of 'super.init' isn't called on all paths before returning from initializer .


回答1:


Short answer:

class A: UIViewController {
let objRunningJobs: UIViewController
let objCompletedJobs: UIViewController

init(objRunningJobs:UIViewController, objCompletedJobs: UIViewController) {
    self.objRunningJobs = objRunningJobs
    self.objCompletedJobs = objCompletedJobs
    super.init(nibName: "TestNib", bundle: nil)
}

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

}

Replace 'TestNib' with yours. But it's a bad way to initialize UIViewController subclass. Probably, you don't understand role of UIViewController's and their hierarchy. What you want to do in your app?



来源:https://stackoverflow.com/questions/50578538/super-init-isnt-called-on-all-paths-before-returning-from-initializer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!