我尝试用Swift 2.0播放声音 如果我写'尝试'没有'!'我收到了错误 "从这里抛出的错误未被处理" 并且AVAudioPlayer不是可选的为什么Xcode请求尝试!' 如果我写'尝试!'我的应用崩溃了 "在展开可选值"
时意外地发现了nilclass TouchViewController: UIViewController {
var soundPath:NSURL?
...................
//Play Bipsound
do { soundPath = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Bipsound", ofType: "wav")!)
var sound = try! AVAudioPlayer(contentsOfURL: soundPath!, fileTypeHint: nil)
sound.prepareToPlay()
sound.play() }
答案 0 :(得分:3)
var soundPath:NSURL?
if let path = Bundle.main.path(forResource: "Bipsound", ofType: "wav") {
soundPath = NSURL(fileURLWithPath: path)
do {
let sound = try AVAudioPlayer(contentsOfURL: soundPath!, fileTypeHint:nil)
sound.prepareToPlay()
sound.play()
} catch {
//Handle the error
}
}
答案 1 :(得分:3)
假装你以前从未在Swift中见过!
强制展开操作符并完全停止使用它。它基本上是“如果此可选包含nil”崩溃的“崩溃”操作符。如@LLooggaann在其出色的答案中所述,使用“if let”样式可选绑定或try / catch。 (投票)