我的代码发布在下面,不确定问题是什么,但返回错误与上面列出的致命错误:
在解包可选值时意外发现nil
我已经看到了类似错误的其他答案,但所有这些都涉及到诸如if之类的事情,这不是我的错误似乎发生的地方,错误消息连接到顶部附近的一行“{{ 1}}“
audioFile = try AVAudioFile(forReading: recordedAudioURL as URl)
答案 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") } }
为我修复了该问题。