我正在制作一个太空入侵者游戏,并且由于同样的原因它一直在崩溃。 具有" bug"的代码在它是:
if (firstBody.categoryBitMask & missileCategory) != 0 &&
(secondBody.categoryBitMask & alienCategory) != 0 {
destroyAlien(firstBody.node as! SKSpriteNode, alien: secondBody.node as! SKSpriteNode)
}
}
崩溃错误是:
致命错误:在解包可选值时意外发现nil
答案 0 :(得分:0)
目前,您正在使用NSCalendar
展开firstBody.node
和secondBody.node
。如果他们中的任何一个为零,您的应用程序将崩溃。您应该更改as!
以获取选项参数,然后使用destroyAlien
。
as?
然后您的代码变为:
func destroyAlien(node1: SKSpriteNode?, alien node2: SKSpriteNode?) {
if let node1 = node1 {
// node1 not nil
}
if let node2 = node2 {
// node2 not nil
}
}
这假设您希望允许其中一个或两个为零。如果两者都不是nil,则代码中的逻辑错误会更早。