0

我正在尝试分配默认值而不是获取 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")
}
4

1 回答 1

0

该错误表明这个类是一个UIViewController. a 的指定初始化程序UIViewController需要nibName& bundle。因此,当您在super.init没有参数的情况下调用时,它会引发错误,因为initfor 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, &viewDidAppear

于 2018-01-09T07:38:42.187 回答