Ios 尝试使用AVAudioPlayer在swift中播放音频时出错

Ios 尝试使用AVAudioPlayer在swift中播放音频时出错,ios,xcode,swift,Ios,Xcode,Swift,我对编码相当陌生,我已经尝试实现在这里类似问题的其他答案中建议的代码,但没有运气。该应用程序构建得很好,但每次我去播放实际的音频文件时,都会收到一条错误消息:“致命错误:在展开可选值(lldb)时意外发现零”,同时突出显示audioPlayer.play()行 有什么想法吗 import UIKit import AVFoundation class PlaySoundsViewController: UIViewController { var audioPlayer:AVAudi

我对编码相当陌生,我已经尝试实现在这里类似问题的其他答案中建议的代码,但没有运气。该应用程序构建得很好,但每次我去播放实际的音频文件时,都会收到一条错误消息:“致命错误:在展开可选值(lldb)时意外发现零”,同时突出显示
audioPlayer.play()

有什么想法吗

import UIKit
import AVFoundation

class PlaySoundsViewController: UIViewController {

    var audioPlayer:AVAudioPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()
        if let filePath = NSBundle.mainBundle().pathForResource("movie_quote", ofType: "mp3"),
            let filePathURL = NSURL.fileURLWithPath(filePath) {
                var audioPlayer = AVAudioPlayer(contentsOfURL: filePathURL, error: nil)

        }else{
            println("the filePath is empty OR the file did not load")
        }

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func playSlowAudio(sender: UIButton) {
        audioPlayer.play()
    }

以下代码应该可以正常工作:

        var soundURL: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("movie_quote", ofType: "mp3")!)!
        var error:NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()

以下是播放音频和停止音频的完整工作代码:

import UIKit
import AVFoundation

class ViewController: UIViewController, AVAudioPlayerDelegate {

    @IBOutlet weak var playAudio: UIButton!
    @IBOutlet weak var stopAudio: UIButton!

    var audioPlayer : AVAudioPlayer? = AVAudioPlayer()
    override func viewDidLoad() {
        super.viewDidLoad()
        let url = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("we_cant_Stop", ofType: "mp3")!)
        var error : NSError?

        audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
        if let err = error{
            println("audioPlayer error \(err.localizedDescription)")
        }else{
            audioPlayer?.delegate = self
            audioPlayer?.prepareToPlay()
        }
    }

    @IBAction func playTapped(sender: AnyObject) {

        if let player = audioPlayer{
            player.play()
        }

    }

    @IBAction func stopTapped(sender: AnyObject) {

        if let player = audioPlayer {
            player.stop()
        }
    }
}
希望这会有帮助


查看示例项目以了解更多信息。

您忘记在类中实现
AVAudioPlayerDelegate
。我认为这应该是主要问题

此外,您还应将
prepareToPlay()
包含在 作用

@IBAction func playSlowAudio(sender: UIButton) {
    audioPlayer.prepareToPlay()
    audioPlayer.play()
}

然后应该有一个位置错误,检查mp3文件路径,它存在于您的项目中。尝试在
audioPlayer.play()
->
audioPlayer.prepareToPlay()
之前添加。感谢您的回复!我尝试添加您的建议,现在代码中没有错误,但每次我点击播放按钮,它都会超时。我现在收到的错误消息是:“10:01:56.367错误:185:timeout 10:01:56.368错误:240:CA_UISoundClientBase::StartPlaying:AddRunningClient失败(状态=-66681)。10:02:07.852错误:185:timeout”感谢您的响应!我和另一个回答有同样的问题。。。暂停。这是文件问题而不是代码问题吗?“10:22:01.630错误:185:timeout 10:22:01.631错误:240:CA_UISoundClientBase::StartPlaying:AddRunningClient失败(状态=-66681)。2015-08-03 10:22:12:12.864 Udacity[24178:686720]10:22:12.864错误:185:timeout”可能是文件有问题尝试用另一个文件替换您的文件,您也可以测试我的示例项目。