线程1:BAD_EXC_INSTRUCTION(代码= EXC_1386_INVOP,子代码= 0x0)

时间:2016-10-27 22:30:17

标签: swift xcode

我的代码发布在下面,不确定问题是什么,但返回错误与上面列出的致命错误:

  

在解包可选值时意外发现nil

我已经看到了类似错误的其他答案,但所有这些都涉及到诸如if之类的事情,这不是我的错误似乎发生的地方,错误消息连接到顶部附近的一行“{{ 1}}“

audioFile = try AVAudioFile(forReading: recordedAudioURL as URl)

2 个答案:

答案 0 :(得分:0)

我正在研究相同的Udacity课程,我相信这是因为mic is not supported in the iOS 8.0+ simulator。一个潜在的解决方法是将此行放入PlaySoundsViewController中的viewDidLoad()函数中:

recordedAudioURL = Bundle.main.url(forResource: "yourSound", withExtension: "mp3")

...然后将名为“yourSound.mp3”的mp3拖到PitchPerfect项目中。这是一个黑客但它会阻止崩溃,并允许你测试该mp3上的音频修改按钮,但如果你想在应用程序中记录你自己的样本,你需要使用一个真正的iOS设备。

编辑:我再次浏览了整个代码库并检查了我的音频设置。在代码库中,我在PlaySoundsViewController中有一个错误放置的方法(准备segue),对于音频设置,一旦我将麦克风设置为我的影院显示音频,录制在模拟器中工作。祝你好运。

答案 1 :(得分:0)

我遇到了同样的问题,这是因为 prepare 语法不正确,并且audioURL没有传播到PlaySoundViewController。

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "stopRecording"   {
        let playSoundsVC = segue.destination as! PlaySoundsViewController
        let recordedAudioURL = sender as! URL
        playSoundsVC.recordedAudioURL = recordedAudioURL
        print("setting URL in PlaySoundsViewController")
    }
}

为我修复了该问题。