Я хочу создать новый вид контроллера представления в Swift, который имеет дополнительное свойство, которое должно быть явно инициализировано.Не имеет смысла, чтобы это свойство было нулевым или имело значение по умолчанию, и контроллер будет инициализироваться только программно.Я попытался определить это следующим образом:
class MyController : UIViewController {
var prop: Int
init(prop: Int) {
self.prop = prop
super.init()
}
required init(coder aDecoder: NSCoder?) {
fatalError("don't serialize this")
}
}
Я попытался запустить это, но он потерпел крах, потому что super.init()
пытается запустить конструктор nib, который не определен, поэтому я попытался добавить это:
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
Но теперь компилятор жалуется, что prop
не инициализируется.И это мой вопрос: как здесь правильно инициализировать prop
? Мне не нужно значение по умолчанию, и все, что я установлю, переопределит правильное значение, которое я установил в другом инициализаторе.
Я вроде как взломал его, установив какое-то значение по умолчанию в nib init, но затем мой первый init сделал это
self.prop = prop
super.init()
self.prop = prop
Но кроме того, что я действительно странный и уродливый, меня это беспокоиттеперь можно инициализировать мой контроллер вида из пера и получить значение по умолчанию, что было бы плохо.
Какой правильный и идиоматический способ сделать это в Swift?