Использование неразрешенного идентификатора в выражении IF - PullRequest
3 голосов
/ 11 мая 2019

Утро

Я работаю на одном из курсов Udemy AppBrewer, и я смотрю, как решить одну из частей работы.Я сделал то, что мне показалось логичным, но это вернуло ошибку.

Использование Swift Я пытаюсь воспроизвести один из двух звуков, основываясь на нажатой кнопке, используя значение тега, чтобы определить звук для воспроизведения.Код работает, когда у меня нет никаких условий.

Я пытаюсь использовать оператор IF, чтобы просмотреть значение тега, а затем принять решение.

Моя проблема в том, что я получаю «Использование неразрешенного идентификатора», которое при проверке звучит так, будто оно не понимает одну из моих переменных (ту, которая находится в условии).Я не могу понять, почему это так, и у меня недостаточно знаний о swift, чтобы разобраться в этом

Работает из условия, только когда я вставляю оператор IF

@IBAction func notePressed(_ sender: UIButton) 
{
if sender.tag == 1 {
        let soundURL = Bundle.main.url(forResource: "note1", withExtension: "wav")
    }
    else {
        let soundURL = Bundle.main.url(forResource: "note2", withExtension: "wav")
    }
    do {    
    audioPlayer = try AVAudioPlayer(contentsOf: soundURL!)
    }
    catch {
        print(error)
    }

    audioPlayer.play()
}
}

Thisэто код ошибки:

Ошибка Использование неразрешенного идентификатора "soundURL" Блок "catch" недоступен, поскольку в блок Do не выдано никаких ошибок

(не знаю почемумой кодовый формат отключен)

1 Ответ

1 голос
/ 11 мая 2019

Поскольку переменная soundURL объявлена ​​внутри ветвей if и else.Блок do находится вне оператора if, поэтому soundURL - это вне области действия в блоке do, поэтому компилятор не может его "увидеть".

Чтобы исправить это, объявите soundURL вне оператора if:

let soundURL: URL?
if sender.tag == 1 {
    soundURL = Bundle.main.url(forResource: "note1", withExtension: "wav")
}
else {
    soundURL = Bundle.main.url(forResource: "note2", withExtension: "wav")
}

Теперь soundURL находится в той же области видимости, что и блок do.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...