当应用程序再次运行时,AVAudioPlayer不再播放音乐

时间:2016-10-04 08:58:53

标签: ios swift avaudioplayer avaudiorecorder avplayerlayer

我正在尝试从文档目录中播放保存录制文件。问题是AVAudioPlayer仅在完成录制后第一次播放音乐。 当我运行我的应用程序时,它不播放音乐。 Xcode给了我那个错误

fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSOSStatusErrorDomain Code=2003334207 "(null)": file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.8/src/swift/stdlib/public/core/ErrorType.swift, line 54

在这一行

self.audioPlayer = try! AVAudioPlayer(contentsOfURL: filePaths[0])

我还检查文件是否存在于目录中,但它不会选择它。任何人都知道如何解决它。 This是我的演示项目。 感谢

class FirstViewController: UIViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate{

    var soundRecorder : AVAudioRecorder!
    var audioPlayer : AVAudioPlayer!
    var filePaths : [NSURL]!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func playBt(sender: AnyObject) {
        if filePaths.count > 0 {
            //print(soundRecorder.url)
            print(filePaths[0])
            self.audioPlayer = try! AVAudioPlayer(contentsOfURL: filePaths[0])
            self.audioPlayer.prepareToPlay()
            self.audioPlayer.delegate = self
            self.audioPlayer.play()
        }
    }

}*

1 个答案:

答案 0 :(得分:2)

代码的问题在于您尝试将URL数组保存到UserDefaults。容器可以随时更改,因此最好将文件名保存在UserDefaults中,然后使用NSSearchPathForDirectoriesInDomains创建文档目录的路径。