我在Objective-C中有这段代码:
CGFloat constant = self.leftConstraint.constant;
我想在Swift中实现同样的功能,但这是我能够让它工作的唯一方法(leftConstraint是一个可选变量):
var leftConstraintConstant : CGFloat = 0.0
if self.leftConstraint {
leftConstraintConstant = self.leftConstraint!.constant
}
Swift中有没有办法在一行上做到这一点?
答案 0 :(得分:9)
原始代码有效,因为在Obj-C中,消息发送到nil will return 0。
Swift不允许使用nil消息。相反,您可以使用可选链接以及nil-coalescing运算符:
let leftConstraintConstant: CGFloat = self.leftConstraint?.constant ?? 0
这更好,因为您明确了解代码应该做什么:传播nil值,默认为0。