使用AVAudioPlayer播放本地音频文件

Swi*_*ier 6 audio file local avaudioplayer swift

我在模拟器中测试我的应用程序.

我正在下载文件并获取它的本地方式,如下所示: file:///Users/administrator/Library/Developer/CoreSimulator/Devices/4CDF286B-543F-4137-B5E2-C312E19B992F/data/Containers/Data/Application/E5F13797-A6A8-48A1-B3C3-FBC3D7A03151/Documents/4d13e04980d3.mp3

现在我想用AVAudioPlayer播放这个文件,但我总是收到这个错误:

file:///
Error Domain=NSOSStatusErrorDomain Code=2003334207 "(null)"
Run Code Online (Sandbox Code Playgroud)

比赛代码:

var alertSound = NSURL(fileURLWithPath: "file:///Users/administrator/Library/Developer/CoreSimulator/Devices/4CDF286B-543F-4137-B5E2-C312E19B992F/data/Containers/Data/Application/E5F13797-A6A8-48A1-B3C3-FBC3D7A03151/Documents/4d13e04980d3.mp3")
        print(alertSound)

        var error:NSError?
        do {
            try audioPlayer = AVAudioPlayer(contentsOfURL: alertSound)
            audioPlayer.prepareToPlay()
            audioPlayer.play()
        } catch {
            print(error)
        }
Run Code Online (Sandbox Code Playgroud)

我该怎么玩呢?

mah*_*udz 14

在iOS8下,您保存的路径在启动时无效.您看到的ID"E5F13797-A6A8-48A1-B3C3-FBC3D7A03151"将随每次发布而变化.

解决方案是保存文件名而不是完整路径,并通过获取Documents(或tmp)文件夹的路径并将文件名附加到其中来重新创建URL或完整路径.

  • 保存文件名,可能通过从:`url.absolutePath.lastPathComponent` 获取。当你想玩的时候,通过将 fieName 附加到 `let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] 来创建一个新的 URL as! NSString` 和使用 `fileURLWithPath` (2认同)