据我所知,许多发布的错误与此类似,但我觉得这是一个例外情况。
作为教程的一部分,我正在通过应用程序运行很长时间运行,但后来无缘无故我可以解决它与错误崩溃
致命错误:在展开Optional值时意外发现nil。问题是,即使我非常缓慢地运行应用程序,它似乎在对象的接触时崩溃,有时也不会(并且应用程序只有3个对象,所以很容易看到发生了什么)。它打破的功能是:
func didBeginContact(contact: SKPhysicsContact) {
if contact.bodyA.node!.name == "ball" {
collisionBetweenBall(contact.bodyA.node!, object: contact.bodyB.node!)
} else if contact.bodyB.node!.name == "ball" {
collisionBetweenBall(contact.bodyB.node!, object: contact.bodyA.node!)
}
}
我知道这只是一个片段,但我想知道应该在哪里寻找错误吗?
答案 0 :(得分:0)
错误
致命错误:在解包可选值时意外发现nil
是因为您的代码中使用!
强制解包的值。
如果您想避免这些崩溃,您可以放心地打开值,例如使用if let
:
func didBeginContact(contact: SKPhysicsContact) {
if let bodyANode = contact.bodyA.node, let bodyBNode = contact.bodyB.node {
if bodyANode.name == "ball" {
collisionBetweenBall(bodyANode, object: bodyBNode)
} else if bodyBNode.name == "ball" {
collisionBetweenBall(bodyBNode, object: bodyANode)
}
} else {
print("error, one of the nodes was nil")
}
}