Code after 'return' will never be executed
var soundFilename = ""
// Determine which sound effect we want to play
//and set the appropriate file name
switch effect {
case .flip:
soundFilename = "cardflip"
case .shuffle:
soundFilename = "cardflip"
case .match:
soundFilename = "dingcorrect"
case.nomatch:
soundFilename = "dingwrong"
}
// Get the path to the sound file inside the bundle
let bundlePath = Bundle.main.path(forResource: soundFilename, ofType: "wav")
guard bundlePath != nil else {
print("Couldn't find sound file \(soundFilename) in the bundle")
return
}
// Create a URL object from this string path
let soundURL = URL(fileURLWithPath: bundlePath!)
do {
// Create audio player object
audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
// Play the sound
audioPlayer?.play()
}
catch {
// Could'nt create audio player object, log the error
print("Could'nt create the audio player object for sound file \(soundFilename)")
}
// }
}
Я полагаю, что вы неправильно поняли защитный синтаксис, поскольку он выполнит код, когда условие выполнено правильно, и перейдет в другую часть, когда условие будет ложным. Поэтому он будет использовать return in else без какого-либо другого кода, так что метод будет завершен изящно, не давая никакого cra sh.
Ключевое слово return используется для возврата чего-либо при выполнении метода или для выхода из метода.
Таким образом, вам нужно закрыть остальную часть с помощью «}» и удалить один блок захвата ниже. Надеюсь, это поможет.