xCode 6最终版本中的编译器错误

xCode 6最终版本中的编译器错误,xcode,swift,sprite-kit,xcode6,Xcode,Swift,Sprite Kit,Xcode6,我当时正在使用beta Xcode处理swift StriteKit中的一个游戏。但是现在随着最终版本的发布,我遇到了很多错误,除了这一个,所有的错误我都能修复 这是我使用BETA XCODE的原始代码,没有错误: bird.zRotation = self.clamp(-1, max: 0.5, value: bird.physicsBody.velocity.dy * (bird.physicsBody?.velocity.dy < 0 ?0.003 : 0.001 )) 但

我当时正在使用beta Xcode处理swift StriteKit中的一个游戏。但是现在随着最终版本的发布,我遇到了很多错误,除了这一个,所有的错误我都能修复

这是我使用BETA XCODE的原始代码,没有错误:

bird.zRotation = self.clamp(-1, max: 0.5, value: bird.physicsBody.velocity.dy *     (bird.physicsBody?.velocity.dy < 0 ?0.003 : 0.001 ))
但xCode最终版本指出physicsBody上的编译器错误,指出:“SKphysicsBody?”没有名为velocity的成员。 我通过将可选类型“?”添加到physicsBody来修复此问题

bird.zRotation = self.clamp(-1, max: 0.5, value: bird.physicsBody?.velocity.dy *     (bird.physicsBody?.velocity.dy < 0 ?0.003 : 0.001 ))
但是这次在dy上仍然出现了一个新的错误,我试着用“!”来表示浮点未展开在dy或“?”之后,编译器仍然建议删除它,并声明后缀“?”应具有可选类型;类型为CGFloat


我试图寻找关于到底发生了什么的信息,但我无法修复这个错误。请提供帮助。

在对可能为零的值执行算术时,Xcode可能会感到困惑。我会尝试将选项从self.clamp呼叫中移出。另外,请注意三元检查周围的间距:它可能试图展开与?接线员

试一试


谢谢你的建议奏效了。仍在试图修正我的原始陈述,但运气不好。非常感谢。
if let dy = bird.physicsBody?.velocity.dy {
  self.clamp(-1, max: 0.5, value: dy * ((dy < 0) ? 0.003 : 0.001)
}