我试图打开一个动作的速度值,每十分钟就增加一次动作,但是当我使用'时,它并没有改变?'在" .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")
}
}
}
答案 0 :(得分:0)
当Swift抛出一个运行时错误并且在解开一个Optional值时抱怨发现nil时,这意味着你的代码假定某些Optional值为非零,当它为nil时。
简而言之:
?
表示:尝试解包,如果失败,请不要继续。!
表示:解包因为我保证不是nil
。回答你的问题:我认为block.action(forKey: "seq2")
返回nil。您想要改变速度的动作不存在。
注意强>
如果?
和!
运算符让您感到困惑,我建议您阅读Apple的Swift Programming Language文档。了解Swift为您提供处理潜在缺失值的工具非常有用。