Сохраненное свойство "текст" без начального значения предотвращает синтезированные инициализаторы

Я изучаю быстро и придумал простой код ниже.

class ARandom{
    var number: Int = 0
    var text: String
}

Однако Xcode отображает следующую ошибку:

stored property "text" without initial value prevents synthesized initializers

Почему это происходит? что такое синтезированный инициализатор? почему "текст" без начального значения предотвращает инициализацию systhesised? Может кто-нибудь, пожалуйста, любезно объяснить это мне? Спасибо за любую помощь!

Ответы

Ответ 1

Здесь у вас есть несколько вариантов.

  • Сделайте text необязательным.

    var text: String?

  • Дайте text значение по умолчанию

    var text: String = ""

  • Дайте text значение в ARandom initializer

    init() { text = "" }

Причина этого в том, что вы определяете text как String. Это необязательно. По существу, вы говорите, что это всегда String и никогда nil.

С вашим текущим кодом, если вы создали новый экземпляр ARandom, text не будет иметь значения - и это невозможно, если text не является необязательным

Apple docs, вероятно, объясняет это немного лучше

Классы и структуры должны устанавливать все свои сохраненные свойства в соответствующее начальное значение к моменту экземпляра этого класса или структура создана. Сохраненные свойства не могут быть оставлены в неопределенное состояние.

Вы можете установить начальное значение для сохраненного свойства в пределах инициализатор или присвоение значения свойства по умолчанию как части определение свойств.