我在Objective-C中有这个代码:
CGFloat constant = self.leftConstraint.constant;
Run Code Online (Sandbox Code Playgroud)
我想在Swift中实现同样的功能,但这是我能够使它工作的唯一方法(leftConstraint是一个可选变量):
var leftConstraintConstant : CGFloat = 0.0
if self.leftConstraint {
leftConstraintConstant = self.leftConstraint!.constant
}
Run Code Online (Sandbox Code Playgroud)
在Swift中有没有办法在一条线上做到这一点?
您的原始代码有效,因为在Obj-C中,发送到nil的消息将返回0.
Swift不允许使用nil消息传递.相反,您可以使用可选链接和nil-coalescing运算符:
let leftConstraintConstant: CGFloat = self.leftConstraint?.constant ?? 0
Run Code Online (Sandbox Code Playgroud)
这更好,因为您明确知道代码应该做什么:传播nil值,默认为0.