Почему я получаю предупреждение "Выражение неявно приведено из 'xx?' любому'"? - PullRequest
0 голосов
/ 06 июня 2019

С swift5 я получаю предупреждение, которое меня очень смущает ...

Когда в моих представлениях есть ограничения, которые должны быть модифицируемыми, обычно это выглядит так:

class myView: UIView {

    let titleLabel = UILabel()
    let descriptionLabel = UILabel()

    var titlePaddingConstraint: NSLayoutConstraint!

    func setupConstraints() {
        self.titlePaddingConstraint = self.titleLabel.bottomAnchor.constraint(equalTo: self.descriptionLabel.topAnchor, constant: -20)

        NSLayoutConstraint.activate([
            self.titlePaddingConstraint //warning here
        ])
    }
}

На 4-й последней строке XCode жалуется:

Выражение неявно приведено из «NSLayoutConstraint?» на «Любой»

Чтобы заткнуться, мне нужно добавить «оператор взрыва (!)», Чтобы развернуть его. Зачем это нужно сейчас? titlePaddingConstraint принудительно разворачивается при объявлении. Разве это не должно полностью предотвратить развертывание этого объекта?

1 Ответ

0 голосов
/ 06 июня 2019

На самом деле activate метод принимает массив NSLayoutContstraints, где вы делаете ошибку. Обновите свой класс как

class MyView: UIView {

  let titleLabel = UILabel()
  let descriptionLabel = UILabel()

  var titlePaddingConstraint: NSLayoutConstraint!

  func setupConstraints() {
    self.titlePaddingConstraint = self.titleLabel.bottomAnchor.constraint(equalTo: self.descriptionLabel.topAnchor, constant: -20)

    NSLayoutConstraint.activate([self.titlePaddingConstraint])
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...