swift - "Operand of postfix '! ' should have optional type; type is ' CG向量 '"

标签 swift sprite-kit

我在 Swift 中使用 Xcode 6,但收到错误“后缀‘!’的操作数”应该有可选类型;类型是“CGVector””在我的代码中说我必须删除!但是,当我这样做时,我收到错误“可选类型‘CGVector’的值?”未打开;您是否想使用“!”或者 '?'?”这迫使我再次添加它。

我不知道该怎么做,这是产生错误的行,问题出在属性“velocity”上:

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

如何解决这个问题?

最佳答案

如果你在 physicalBody?.velocity 两边加上括号,那么它就可以工作

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

这是因为 velocity 本身不是可选的,但它是可选的,因为它是通过可选链访问的。可选需要展开,但仅仅在后面放置 ! 还不够,因为它绑定(bind)到 velocity。添加括号会导致 ! 应用于可选链接表达式的结果。

关于swift - "Operand of postfix '! ' should have optional type; type is ' CG向量 '",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268687/

相关文章:

swift - 在 UITableView 部分标题中锚定 UILabel

swift - 如何在没有样板的情况下从父类(super class)访问内部对象的属性

ios - 快速获取另一个类(class)的位置结果

swift - 在 SpriteKit 中的 Flappy Bird 风格游戏中使用 self.speed 改变物理?

xcode - 使用 SpriteKit 场景编辑器绘制圆圈和其他形状?

ios - 如何测试 View Controller 是否被关闭或弹出

swift - 标题顶部的 NSTableView 单元格

ios - Xcode 8 在打开项目后立即崩溃(似乎与场景编辑器相关)

ios - 创建 SKLabelNode 时未命名的子节点?

ios - 如何将 SkLabelNode 中的文本居中