我仍然是编码的初学者,但我正在研究一个非常基本的音乐播放器,以了解Swift的工作原理。
////Functions
//Play chosen file function
func playChosenFile() {
//Set up the music file URL.
let musicFilePathURL = MenuBarModel.mainMenu.URL
if musicFilePathURL != nil {
//Initialize audioPlayer with safety.
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: musicFilePathURL!)
}
catch {
}
}
else if musicFilePathURL == nil {
//Some code that will make the player do nothing.
}
}
//Play function
func play() {
playChosenFile()
audioPlayer.play()
}
因此,如果我使用NSOpenPanel()选择音频文件,则会使用URL初始化musicFilePathURL。
如果我使用NSOpenPanel()选择文件,则musicFilePathURL具有所选文件的位置,然后传递给AVAudioPlayer。按下“播放”按钮后,执行“play()”功能,然后执行playChosenFile()和audioPlayer.play()。
如果我按下播放按钮之前,音乐播放器会播放歌曲。
如果在选择要播放的文件之前按下播放按钮,则程序崩溃,因为musicFilePathURL为零。
如果在按下播放按钮之前没有选择文件,我对如何使程序不崩溃感到困惑。例如,如果您打开VLC,如果按“播放”按钮,则会提示选择文件,但如果您决定按取消,则播放器不会执行任何操作。
如果在启动时没有选择音频文件的情况下按播放按钮,如何让我的程序无效?
答案 0 :(得分:0)
你对音频播放器的try / catch语句有正确的想法,但你可以在play()函数中使用另一个。
这样当audioPlayer尝试播放一个空对象时,会捕获一个异常,你可以自己处理它,而不是让应用程序崩溃。
也许是这样的?我会尝试一下,但不幸的是我把我的Mac留在了家里。
func play(){
do {
playChosenFile()
audioPlayer.play()
} catch {
print "Error Occurred (Did the user specify a file?)
}
}