AVFoundation 快速播放声音 2

Posted

技术标签:

【中文标题】AVFoundation 快速播放声音 2【英文标题】:AVFoundation play sound swift 2 【发布时间】:2015-09-28 22:47:01 【问题描述】:

我尝试使用 Swift 2.0 播放声音 如果我写 'try' 没有 '!'我有错误 “不处理从这里抛出的错误” 而且 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() 

【问题讨论】:

【参考方案1】:

假设您以前从未在 Swift 中看到过 ! 强制展开运算符并完全停止使用它。它基本上是“如果此可选选项包含 nil 则崩溃”运算符。使用@LLooggaann 在他的优秀答案中概述的“if let”样式可选绑定或尝试/捕获。 (已投票)

【讨论】:

同意。我确实在soundPath 上使用了它,但只是因为我 100% 知道从上面的行来看它是安全的,而且我假设它被声明为可选是有原因的。总是可以多加一个if let 以确保超级安全。【参考方案2】:
    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
        
    

【讨论】:

以上是关于AVFoundation 快速播放声音 2的主要内容,如果未能解决你的问题,请参考以下文章

快速播放声音似乎不适用于我的应用程序

Xcode iOS:如何使用 AVFoundation 重置声音

如何播放简单的系统声音[重复]

AVFoundation - iOS 听不到声音

如何在 iOS 中播放声音?

无法在事件中播放声音 (wav)