应用程序随机时刻Swift崩溃

时间:2016-03-15 00:17:46

标签: xcode swift

我正在制作一个太空入侵者游戏,并且由于同样的原因它一直在崩溃。 具有" bug"的代码在它是:

if (firstBody.categoryBitMask & missileCategory) != 0 &&
        (secondBody.categoryBitMask & alienCategory) != 0 {
            destroyAlien(firstBody.node as! SKSpriteNode, alien: secondBody.node as! SKSpriteNode)

    }
}

崩溃错误是:

致命错误:在解包可选值时意外发现nil

1 个答案:

答案 0 :(得分:0)

目前,您正在使用NSCalendar展开firstBody.nodesecondBody.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,则代码中的逻辑错误会更早。