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)'的参数列表调用'=='
我该怎么办?
答案 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
}