"后缀的操作数'!'应该有可选的类型;类型是' CGVector'"

时间:2014-10-09 00:51:27

标签: swift sprite-kit

我正在使用Xcode 6和Swift,我收到了错误"后缀的操作数'!'应该有可选的类型;类型是' CGVector'"在我的代码上说我必须删除一个!但是,当我这样做时,我得到错误"可选类型的值' CGVector?'没有打开;你的意思是使用'!'或'?'?"这迫使我再次添加它。

我不确定该怎么做,这里是产生错误的行,问题在于属性" velocity":

if(Utils.getNetVec(physicsBody?.velocity!, gravity: gravity, signs: true).dy > CGFloat(0)) {

如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

如果你在physicsBody?.velocity附近加上括号,那就可以了

if(Utils.getNetVec((physicsBody?.velocity)!, gravity: gravity, signs: true).dy > CGFloat(0)) {

这是因为velocity本身不是可选的,但是它是可选的,因为它是通过可选链接访问的。可选项需要解包,但只是将!放在isn不够好之后,因为它绑定到velocity。添加括号会导致!应用于可选链接表达式的结果。