Получена ошибка lldb при назначении значения для heightconstraint.constant - PullRequest
0 голосов
/ 16 октября 2018

Я создал ограничение по высоте и назначаю ему значение в соответствии с размером экрана.Но при назначении я получаю ошибку Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value в строке heightConstraint.constant = Height

var heightConstraint: NSLayoutConstraint!
let Height =((intra_acc_send_b.frame.origin.y+intra_acc_send_b.frame.size.height)+20)

print ("\nheight%%%%%%%%%%%%%%%% ") ; print(Height); print(" %%%%%%%%%%%%%%%%%\n");
heightConstraint.constant = Height 
self.scrollView.contentSize = CGSize(width: Width,  height: heightConstraint.constant )

Пожалуйста, помогите мне найти решение.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Позаботьтесь о следующих строках:

print ("\nheight%%%%%%%%%%%%%%%% ") ; print(Height); print(" %%%%%%%%%%%%%%%%%\n");
heightConstraint.constant = Height 
self.scrollView.contentSize = CGSize(width: Width,  height: heightConstraint.constant )

В зависимости от типа используемого вами класса:

В ViewController

Получите их послеили во время

viewDidLoad

В виде

Иметь их после или во время

awakeFromNib
0 голосов
/ 16 октября 2018

heightConstraint равен нулю, и вы получаете к нему доступ, поэтому возникает эта ошибка.В Swift 4.2 неявное Force Unwrapping было отменено.Поэтому, если вы проверяете heightConstraint, он выдаст необязательное значение, даже если его ImplicitlyForceWapped, если оно имеет значение.

Вам необходимо дополнительно связать безопасное развертывание с помощью if let или guard перед присвоением нового значения.

if let constraints = heightConstraint {
    heightConstraint.constant = Height 
}

или

guard let constraints =  heightConstraint else { return }
heightConstraint.constant = Height 

Ваш вид еще не создан, поэтому высоты еще нет.

0 голосов
/ 16 октября 2018

Это потому, что вы никогда не инициализировали heightConstraint (это nil).Сначала вам нужно его инициализировать.

Если heightConstraint равен @IBOutlet, вам нужно запустить этот код в viewDidLoad или более поздней версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...