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

Posted

技术标签:

【中文标题】应用程序再次运行时,AVAudioPlayer 不再播放音乐【英文标题】:AVAudioPlayer not Play Music again when app run again 【发布时间】:2016-10-04 08:58:52 【问题描述】:

我正在尝试从文档目录播放保存的录音文件。问题是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()
        
    

*

【问题讨论】:

您能否编辑问题以便我们理解问题。很难找出问题所在。 我编辑我的问题。 do self.audioPlayer = try! AVAudioPlayer(contentsOfURL: filePaths[0]) catch let error print(error) 实际上框架有一些错误,它正在尝试抛出错误。您可以检查错误并纠正您缺少的内容。 我也试过这个,但这也给了我错误。 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 检查该位置是否有文件。 fileExistsAtPath:。如果有问题,osstatus.com。这个网站会让你知道错误代码是指什么样的错误。 【参考方案1】:

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

【讨论】:

以上是关于应用程序再次运行时,AVAudioPlayer 不再播放音乐的主要内容,如果未能解决你的问题,请参考以下文章

如何播放与 AVAudioPlayer 重叠的相同声音?

AVAudioPlayer 不认为它在播放时

AVAudioPlayer 在停止或恢复时“滴答”

AVAudioPlayer 重置当前播放的声音并从头开始播放

iPhone:AVAudioPlayer 并不总是在设备上播放音频

AVAudioPlayer 导致内存泄漏