Swift 3/4 AVAudioPlayer:contentsOf:多次加载相同的URL时失败

时间:2017-08-30 00:51:48

标签: swift url audio avaudioplayer

我正在使用Swift 4,Xcode 9 Beta 6中的一个简单游戏,尝试从同一个URL多次加载音频文件时出错。让我告诉你我的意思;我有一个看起来有点像这样的代码。

guard let url = Bundle.main.url(forResource: soundName, withExtension: ext) else {
    return nil
}

do {

    player = try AVAudioPlayer(contentsOf: url)
    player.prepareToPlay()

} catch let error {
    print("Could not create AVAudioPlayer with url: \(url.absoluteString)")
    return nil
    print("Error: \(error.localizedDescription")
}

注意:soundNameextString个对象,组成本地音频文件的名称。 player是AVAudioPlayer类型的属性。

游戏使用此代码创建声音,该代码首先完美运行,但过了一段时间,它变得懒惰,player = try AVAudioPlayer(contentsOf: url)失败并打印: Could not create AVAudioPlayer with url: url here Error: The operation couldn't be completed. (NSOSStatusErrorDomain error -42.)

任何人都有任何想法?

编辑1:

我使用let data = try Data(contentsOf: url)将URL的内容加载到Data对象中,这似乎解决了这个问题。我没有解决它,因为我仍然想知道使用一个URL有什么问题,以及为什么它在多次加载相同的URL后停止工作。另外,首先将内容加载到二进制Data对象中可能需要更多资源和时间吗?

0 个答案:

没有答案