Swift “后缀'!'的操作数应具有可选类型;类型为'CGVector'”

Swift “后缀'!'的操作数应具有可选类型;类型为'CGVector'”,swift,sprite-kit,Swift,Sprite Kit,我将Xcode 6与Swift一起使用,得到了后缀“!”的错误操作数应具有可选类型;我的代码上的类型是“CGVector”,表示我必须删除一个!但是,当我这样做时,我会得到可选类型“CGVector”的错误值,而不是展开;你想用“!”吗还是“?”?这迫使我再次添加它 我不确定该怎么办,这是产生误差的一行,问题在于速度特性: if(Utils.getNetVec(physicsBody?.velocity!, gravity: gravity, signs: true).dy > CGFlo

我将Xcode 6与Swift一起使用,得到了后缀“!”的错误操作数应具有可选类型;我的代码上的类型是“CGVector”,表示我必须删除一个!但是,当我这样做时,我会得到可选类型“CGVector”的错误值,而不是展开;你想用“!”吗还是“?”?这迫使我再次添加它

我不确定该怎么办,这是产生误差的一行,问题在于速度特性:

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

我怎样才能避开这个问题呢?

如果你在physicsBody?周围加上括号,那么它就起作用了

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

这是因为velocity本身不是可选的,但由于它是通过可选链接访问的,所以它是可选的。可选的需要打开包装,但只是放!after不够好,因为它与速度有关。添加括号会导致错误!要应用于可选链接表达式的结果。

谢谢,对于有相同问题的人,请注意,也可以通过展开physicsBody来修复此问题首先检查/展开physicsBody可能是一个更好的主意。