Назначение CLLocationCoordinate2D пустым вместо NIL
Я пытаюсь назначить значение по умолчанию для вместо 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")
}
1 ответ
Ошибка предполагает, что этот класс UIViewController
, Назначенный инициализатор для UIViewController
требует nibName
& bundle
, Поэтому, когда вы звоните super.init
без аргументов выдает ошибку, так как init
метод для 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