我一直在为这个错误而苦苦挣扎,我不知道它是从哪里来的。我正在从我的应用程序中的“文件”应用程序中选择一个文件。它返回正确的URL(file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/sound.mp3)。
但是,当尝试使用AVAudioPlayer播放它时,出现错误域= NSOSStatusErrorDomain代码= -54“(null)”。 我怀疑这与权限有关,但是我找不到解决方法。将文件添加到项目中的资产时,它可以正常播放。
有任何线索吗?
我正在使用的代码如下:
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard controller.documentPickerMode == .open, let url = urls.first, url.startAccessingSecurityScopedResource() else {
return
}
defer {
url.stopAccessingSecurityScopedResource()
}
do {
print("Playing \(url)")
try audioPlayer = AVAudioPlayer(contentsOf: url)
print("preparing...")
audioPlayer?.prepareToPlay()
print("playing...")
audioPlayer?.play()
} catch {
print(error)
}
controller.dismiss(animated: true, completion: nil)
}
此外,我已经添加了iCloud文档权利...