我目前正在从Firebase下载音频文件,将其保存在本地并在表格 View 中列出。我正在像这样获取本地目录:

文件:/// var / mobile / Containers / Data / Application / 6C72433F-4DF0-4976-BBDE-36F6B5C23E6D / Documents / nJNJwVNMrmUGj9uszManQmMOZf52_NO:1.m4a

当我尝试使用AVAudioPLayer播放音频文件时,出现错误:

错误域= NSOSStatusErrorDomain代码= 2003334207“(空)”

我已经坚持了三天,非常感谢有人指出我正确的方向。如果需要任何其他代码来帮助解决此问题,请告诉我。谢谢。

这是我播放音频的代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    //Access the cell tapped on and the path to the recording the user wants to listen to
    let path = findDirectory(filename:userID + "_NO:" + String(recordingNumber)).appendingPathComponent("\(indexPath.row + 1).m4a")

    do {
        self.audioPlayer = try AVAudioPlayer(contentsOf: path)
        self.audioPlayer.play()
    } catch let error as NSError {
        print(error.description)
    }
}

我找到目录的代码在这里:
func findDirectory(filename:String) -> URL {
    let fileManager = FileManager.default
    let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
    let docDirectory = urls[0] as URL
    let soundURL = docDirectory.appendingPathComponent("\(filename).m4a")
    print(soundURL)
    return soundURL
}

最佳答案

如果您下载的文件另存为nJNJwVNMrmUGj9uszManQmMOZf52_NO:1.m4a,那么为什么要通过以下方式附加到它的顶部:.appendingPathComponent("\(indexPath.row + 1).m4a")在表 View 中此值<row_value + 1>.m4a

就像现在,您正在尝试查找另存为的文件:nJNJwVNMrmUGj9uszManQmMOZf52_NO:1.m4a<row_value + 1>.m4a

这里<row_value + 1>是我在此答案中用来向您展示含义的占位符,但在实际代码中将被12,...之类的值替换。

为了更好地解释它,让我们分析:

let path = findDirectory(filename:userID + "_NO:" + String(recordingNumber)).appendingPathComponent("\(indexPath.row + 1).m4a")
  • userID + "_NO:"会产生类似以下内容:nJNJwVNMrmUGj9uszManQmMOZf52_NO:
  • String(recordingNumber)将产生类似以下内容的信息:1(例如)
  • 并使用上面的方法执行findDirectory(filename: ...)将把nJNJwVNMrmUGj9uszManQmMOZf52_NO:1.m4a作为let soundURL = docDirectory.appendingPathComponent("\(filename).m4a")

  • 现在在
  • 之上,您执行.appendingPathComponent("\(indexPath.row + 1).m4a"),将更多内容附加到看起来已经完成的路径

  • 您可能希望修改逻辑以更好地匹配路径与表 View 的期望方式,以便为文件编写正确的路径(也许在这种情况下,这意味着您要删除在步骤4中执行的多余操作)

    08-19 10:47