如何解决线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

时间:2016-05-31 05:45:35

标签: ios swift audio

我正在尝试用ios(快速语言)完成的项目中播放音频。由于错误,我无法播放音频

  

主题1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

分开时,我可以播放相同的音频。但是当我将它添加到我的项目中时会出现上述错误。我尝试使用不同的代码播放音频。但同样的错误在同一行重复。

  @IBAction func playaudio(sender:AnyObject)
  {
    var ButtonAudioPlayer: AVAudioplayer!
    let path = NSBundle.mainBundle()pathResource("ButtonAudio.wav",ofType:nil)! // error
    let url = NSURL(fileURLWithPath: path)
    do
    {
      let ButtonAudioPlayer1 = try! AVAudioPlayer(contesOfURL:url)
      ButtonAudioPlayer = ButtonAudioPlayer1
      ButtonAudioPlayer1.play()
    }
}

3 个答案:

答案 0 :(得分:2)

由于强行解开零路径,您将获得EXC_BAD_INSTRUCTION 。检查文件的路径,并在ofType中使用“wav”。像这样的代码可以帮助你解决这个问题:

guard let path = NSBundle.mainBundle().pathForResource("ButtonAudio", ofType: "wav") else {
    print("there is not such a file")
    return
}

答案 1 :(得分:1)

我注意到其他一些项目。

你在路径上的作业是不正确的,因为它缺少了。在pathForResource之前。如上所述,您也错过了类型。

当你分配你的buttonAudioPlayer时,你有一个拼写错误,你在缺少contentsOfUrl中的n。

您也没有将camelCase与变量一起使用,这是常用的做法。

@IBAction func playAudio(sender:AnyObject) {
    var buttonAudioPlayer: AVAudioPlayer
    if let path = NSBundle.mainBundle().pathForResource("ButtonAudio", ofType: "wav") {
        let url = NSURL(fileURLWithPath: path)
        do {
            let buttonAudioPlayer1 = try! AVAudioPlayer(contentsOfURL: url)
            buttonAudioPlayer = buttonAudioPlayer1
            buttonAudioPlayer.play()
        }
    }
}

答案 2 :(得分:0)

试试这个,

// Grab the path, make sure to add it to your project!
var path = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("ButtonAudio", ofType: "wav"))
var audioPlayer = AVAudioPlayer()

audioPlayer = AVAudioPlayer(contentsOfURL: path, error: nil)
audioPlayer.prepareToPlay()

audioPlayer.play()

确保您已在主捆绑中正确添加了音频。打印它你得到的路径。