"Никогда не будет казнен"

Я не знаю, почему эта ошибка появляется в коде:

    func torpedoDidCollideWithAlien(torpedo:SKSpriteNode, alien:SKSpriteNode){
        print("HIT")
        torpedo.removeFromParent()
        alien.removeFromParent()

        var aliensDestroyed = 0
        aliensDestroyed += 1

        if (aliensDestroyed > 10){ //Transition to GameOver or Success
            let transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5)
                let gameOverScene:SKScene = GameOverScene(size: self.size, won: true)
                self.view?.presentScene(gameOverScene, transition: transition)
            }

Ошибка в строке:

let transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5) //'Will never be executed'

2 ответа

Вы объявляете новую переменную с именем aliensDestroyed со значением 0, Затем вы увеличиваете значение до 1,

Затем вы проверяете, является ли значение больше 10. Это не может быть правдой. Это всегда будет 1,

Поэтому содержание if заявление никогда не будет выполнено.

Что вы, вероятно, хотите, это переменная экземпляра с именем aliensDestroyed вместо создания новой локальной переменной внутри вашего torpedoDidCollideWithAlien функция.

Это не ошибка, это предупреждение. Компилятор выполнил анализ вашего кода и говорит вам, что то, как вы его написали, ваше утверждение if никогда не будет истинным, поэтому оператор внутри фигурных скобок никогда не будет выполнен.

Рмадди объяснил почему в своем ответе.

Другие вопросы по тегам