SpriteKit Unwrap

时间:2016-08-10 00:17:52

标签: ios sprite-kit ios10

我试图打开一个动作的速度值,每十分钟就增加一次动作,但是当我使用'时,它并没有改变?'在" .speed"之前。如果我使用'!'它抛出一个"展开一个可选值"错误&#34 ;.我该如何解决这个问题? 这是我的代码

 for child in self.children as! [SKSpriteNode] {
        if let block: SKSpriteNode = child as? SKSpriteNode {
            if (tapCount == 10) {
                block.action(forKey: "seq")?.speed += 0.5
                block.action(forKey: "seq2")?.speed += 0.5
                print(block.action(forKey: "seq2")?.speed)
                tapCount = 0
                print("YES")
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

当Swift抛出一个运行时错误并且在解开一个Optional值时抱怨发现nil时,这意味着你的代码假定某些Optional值为非零,当它为nil时。

简而言之:

  • ?表示:尝试解包,如果失败,请不要继续。
  • !表示:解包因为我保证不是nil

回答你的问题:我认为block.action(forKey: "seq2")返回nil。您想要改变速度的动作不存在。

注意
如果?!运算符让您感到困惑,我建议您阅读Apple的Swift Programming Language文档。了解Swift为您提供处理潜在缺失值的工具非常有用。