Xcode 尝试在Swift中播放声音时出现致命错误

Xcode 尝试在Swift中播放声音时出现致命错误,xcode,swift,avaudioplayer,Xcode,Swift,Avaudioplayer,我已经完成了本教程。最后要做的一件事是让按钮在按下时发出声音。然后我想继续使用同样的逻辑来制作一个声卡应用程序。然而,当我在一个新的项目中,除了制造噪音之外,还剥离了一些非必要的部分时,我开始犯一个致命的错误 这是我的ViewController.swfit文件: import UIKit import AVFoundation class ViewController: UIViewController { var sample : AVAudioPlayer? func s

我已经完成了本教程。最后要做的一件事是让按钮在按下时发出声音。然后我想继续使用同样的逻辑来制作一个声卡应用程序。然而,当我在一个新的项目中,除了制造噪音之外,还剥离了一些非必要的部分时,我开始犯一个致命的错误

这是我的ViewController.swfit文件:

import UIKit
import AVFoundation



class ViewController: UIViewController {

    var sample : AVAudioPlayer?

func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer?  {
    //1
    let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
    let url = NSURL.fileURLWithPath(path!)

    //2
    var audioPlayer:AVAudioPlayer?

    // 3
    do {
        try audioPlayer = AVAudioPlayer(contentsOfURL: url)
    } catch {
        print("Player not available")
    }

    return audioPlayer
}

override func viewDidLoad() {
    super.viewDidLoad()

    if let sample = self.setupAudioPlayerWithFile("Stomach", type:"aif") {
        self.sample = sample
    }
}

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

@IBAction func buttonPressed()  {
    sample?.play()
}


}
这是致命错误出现时我的项目

我也试过,但也有错误


我正在使用Xcode 7.3运行El Capitan 10.11.3,您的项目中是否包含名为“gast.aif”的音频文件?否则,
pathForResource
将返回nil,并且在尝试强制展开该路径时将崩溃。你可以使用这个函数的一个更安全的版本,尽管如果它找不到那个文件,它仍然不会播放好的一面,它应该不会崩溃

func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer?  {
    var audioPlayer:AVAudioPlayer? = nil

    if let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) {
        let url = NSURL.fileURLWithPath(path)

        do {
            try audioPlayer = AVAudioPlayer(contentsOfURL: url)
        } catch {
            print("Player not available")
        }
    }

    return audioPlayer
}

您是否在项目中包含名为“gast.aif”的音频文件?否则,
pathForResource
将返回nil,并且在尝试强制展开该路径时将崩溃。你可以使用这个函数的一个更安全的版本,尽管如果它找不到那个文件,它仍然不会播放好的一面,它应该不会崩溃

func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer?  {
    var audioPlayer:AVAudioPlayer? = nil

    if let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String) {
        let url = NSURL.fileURLWithPath(path)

        do {
            try audioPlayer = AVAudioPlayer(contentsOfURL: url)
        } catch {
            print("Player not available")
        }
    }

    return audioPlayer
}

好消息和坏消息。这可以工作并且不会使应用程序崩溃(耶!)。然而,我确实有音频文件复制到我的项目,但它仍然没有播放它。我会继续努力,看看这是否是我在按键部分犯的错误。但那个func似乎起作用了它起作用了!结果是。不支持aif。使用了.mp3,效果很好。非常感谢!好消息和坏消息。这可以工作并且不会使应用程序崩溃(耶!)。然而,我确实有音频文件复制到我的项目,但它仍然没有播放它。我会继续努力,看看这是否是我在按键部分犯的错误。但那个func似乎起作用了它起作用了!结果是。不支持aif。使用了.mp3,效果很好。非常感谢!