如何检查Swift中的对象是否为零?

时间:2014-12-28 23:57:42

标签: ios swift

var buttonSpringAnimation = self.pop_animationForKey(animationKey) as POPSpringAnimation
if buttonSpringAnimation == nil {
   buttonSpringAnimation = POPSpringAnimation(propertyNamed: kPOPLayerScaleXY)
   buttonSpringAnimation.fromValue = fromValue
   buttonSpringAnimation.toValue = toValue
   buttonSpringAnimation.springSpeed = 20.0
   buttonSpringAnimation.springBounciness = 25.0
   self.layer.pop_addAnimation(buttonSpringAnimation, forKey: animationKey)
}
  

如果buttonSpringAnimation == nil {
  这个会抱怨:不能使用类型'(@lvalue POPSpringAnimation,NilLiteralConvertible)'的参数列表调用'=='

我该怎么办?

1 个答案:

答案 0 :(得分:3)

当一个对象属于非可选类型时,它不能是nil,因此编译器根本不允许你执行检查。

当您使用as运算符而没有问号时,您告诉swift他的转换必须成功,在这种情况下,您永远不会看到nil作为结果。如果您不确定转换是否成功,请使用转换为可选类型。您可以将其与隐式nil检查结合使用,如下所示:

if let buttonSpringAnimation = self.pop_animationForKey(animationKey) as? POPSpringAnimation {
    ... // This block of code will be entered only when the conversion is successful
}