Принятый ответ на предоставленную вами ссылку довольно хорошо объясняет эту проблему, ИМХО.По сути, в вашем примере вы используете три «ранее» объявленных UITextField
s в вашем объявлении ingStackView
.Однако эти четыре переменные не обязательно определяются в этом порядке во время выполнения .Xcode выдает эту ошибку, потому что, например, ingprice
может быть определено после ingStackView
.Это всего лишь пример, в заказе нет гарантии.
Когда вы объявляете каждую из переменных с помощью lazy var
, ошибка исчезает из-за того, что согласно документации Swift Apple:
Ленивое хранимое свойство - это свойство, начальное значение которого не рассчитывается до первого использования.Вы указываете ленивое сохраненное свойство, записывая модификатор lazy перед его объявлением.
Это означает, что для ленивых переменных все они определяются при инициализации , поэтому вы гарантированноиметь все четыре значения переменных.