目标C中有此代码:
CGFloat constant = self.leftConstraint.constant;
我希望在swift中实现相同的目标,但这是我唯一能够让它工作的方法(leftconstraint是一个可选变量):
var leftConstraintConstant : CGFloat = 0.0
if self.leftConstraint {
leftConstraintConstant = self.leftConstraint!.constant
}
有没有一种快速的方法可以在一条线上做到这一点?
最佳答案
您的原始代码工作正常,因为在obj-c中,消息发送到nilwill return 0。
斯威夫特不允许零信息。相反,您可以使用可选的链接和nil合并操作符:
let leftConstraintConstant: CGFloat = self.leftConstraint?.constant ?? 0
这甚至更好,因为您明确了代码应该做什么:传播nil值,默认值为0。