XCode 7 Swift - 调用可以抛出,它没有被标记为 'try' 并且错误没有被处理

XCode 7 Swift - Call can throw, it it is not markedwith 'try' and the error is not handled

我尝试在我的 iOS 应用程序上播放音乐,当我点击一个按钮时,我已经知道该怎么做,但这次当我插入线路时; audioPlayer = AVAudioPlayer(contentsOfURL: audioPlayerURL, error: nil)它会给我一个选项,将 error 更改为 fileTypeHint,我这样做了,但随后出现以下错误; `Call can throw, it is not markedwith 'try' and the error is not handled'.

我不太明白,因为在 Xcode 6 中,我在那行代码中使用了 error 这个词,我对此没有任何问题,并且可以播放音乐。自从我升级到 Xcode 7 Beta 3 以来,一定有不同或相似的方式来编写该行,但我到处搜索以查看发生了什么变化。

有人知道吗?

我遇到了同样的问题,在拼凑了一些信息之后,这就是我想出的,它适用于 Swift 2.0。

override func viewWillLayoutSubviews() {

    let bgMusicURL:NSURL = NSBundle.mainBundle().URLForResource("bgmusic", withExtension: "mp3")!

    backgroundMusicPlayer = try!  AVAudioPlayer(contentsOfURL: bgMusicURL)

    backgroundMusicPlayer.numberOfLoops = -1

    backgroundMusicPlayer.prepareToPlay()

    backgroundMusicPlayer.play()
}

确保导入 AVFoundation

并将其添加到您的控制器中

var backgroundMusicPlayer:AVAudioPlayer = AVAudioPlayer()

错误处理在 Swift 2.0 中发生了变化。使用以下 try-catch 代码解决错误:

    do {
        audioPlayer = try AVAudioPlayer(contentsOfURL: audioFileUrl,
                                        fileTypeHint: AVFileTypeMPEGLayer3)
    } catch let error as NSError {
        print("AV Sound Error: \(error.localizedDescription)")
    }