Я пытаюсь подклассифицировать UILabel и автоматически генерировать значение для одного из свойств, так что я могу инициализировать с некоторыми значениями и создавать другие случайным образом.Создать значение для свойства класса
Например, здесь я хочу, чтобы иметь возможность создать новый MyLabel, передать значение для labelString и получить значение для labelNumber, генерируемого случайным образом.
class MyLabel: UILabel {
var labelString : String!
var labelNumber : Int!
init(frame: CGRect, labelString: String) {
self.labelString = labelString
self.labelNumber = createNumber()
super.init(frame: frame)
}
func createNumber() -> Int {
return Int(arc4random())
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Я получаю сообщение об ошибке «Использование« я »в вызове метода до того, как super.init инициализирует себя». Есть ли способ исправить это или лучше использовать шаблон?
Большое спасибо за помощь!
Кстати, есть ли конкретная причина, по которой вы хотите, чтобы 'labelString' и' labelNumber' были * Optional * s? По какой причине у вас будет для них «нуль», и чтение их в этом случае потерпит крах с тех пор, как вы их сделали * Неявно Unwrapped Optional * s. – vacawama
Выполнение параметров optionals вышло из следующего урока (вслепую), но в моем случае это не обязательно. Поэтому второе решение не работает здесь, когда они не являются опциями, но функция Static идеальна! Спасибо, что помогли мне разобраться. – enesefuu
Добро пожаловать. Вы можете заставить второе решение работать с непараллельными, объявив его как 'var labelNumber = 0' – vacawama