我正在使用Xcode 6和Swift,我收到了错误"后缀的操作数'!'应该有可选的类型;类型是' CGVector'"在我的代码上说我必须删除一个!但是,当我这样做时,我得到错误"可选类型的值' CGVector?'没有打开;你的意思是使用'!'或'?'?"这迫使我再次添加它。
我不确定该怎么做,这里是产生错误的行,问题在于属性" velocity":
if(Utils.getNetVec(physicsBody?.velocity!, gravity: gravity, signs: true).dy > CGFloat(0)) {
如何解决这个问题?
答案 0 :(得分:4)
如果你在physicsBody?.velocity
附近加上括号,那就可以了
if(Utils.getNetVec((physicsBody?.velocity)!, gravity: gravity, signs: true).dy > CGFloat(0)) {
这是因为velocity
本身不是可选的,但是它是可选的,因为它是通过可选链接访问的。可选项需要解包,但只是将!
放在isn不够好之后,因为它绑定到velocity
。添加括号会导致!
应用于可选链接表达式的结果。