AVFoundation播放声音迅速2

时间:2015-09-28 22:47:02

标签: ios swift avfoundation

我尝试用Swift 2.0播放声音 如果我写'尝试'没有'!'我收到了错误 "从这里抛出的错误未被处理" 并且AVAudioPlayer不是可选的为什么Xcode请求尝试!' 如果我写'尝试!'我的应用崩溃了 "在展开可选值"

时意外地发现了nil
class 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() }

2 个答案:

答案 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。 (投票)