目标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。

10-02 03:12