我正在尝试分配默认值而不是获取Nul。但是我收到了一个错误:
必须调用超类的指定初始化程序' UIViewController'
如何消除错误?
代码:
var destination : CLLocationCoordinate2D
init(){
super.init()
self.destination.latitude = Double("")!
self.destination.longitude = Double("")!
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
答案 0 :(得分:0)
该错误表明此类是UIViewController
。 UIViewController
的指定初始值设定项需要nibName
& bundle
。因此,当您在没有参数的情况下调用super.init
时,它会抛出一个错误,因为init
的{{1}}方法(在这种情况下是超类)需要这些参数。
基本上,您必须将UIViewController
替换为
super.init()
更好的方法:
覆盖super.init(nibName: String?, bundle: Bundle?)
方法
init
正确的方法:
根本不使用var destination : CLLocationCoordinate2D
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
self.destination.latitude = Double("")!
self.destination.longitude = Double("")!
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
。相反,使用init
的生命周期方法,例如UIViewController
,viewDidLoad
和& viewWillAppear