自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
])
}
}
在最后四行,XCode抱怨:
表达式从“ NSLayoutConstraint?”隐式强制转换去任何'
要使其关闭,我必须添加“ bang运算符(!)”以将其解包。为什么现在需要?
titlePaddingConstraint
在声明时被强制展开。这不是应该完全避免对该对象进行解包吗? 最佳答案
实际上,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])
}
}
关于ios - 为什么收到警告“表达式从'xx隐式强制'?”去任何'”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56478438/