Назначение 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

Другие вопросы по тегам