Я боролся с этой ошибкой и не могу понять, откуда она. Я выбираю файл из приложения Файлы в моем приложении. Он возвращает правильный URL (файл: ///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/sound.mp3).
Однако при попытке воспроизвести его с помощью AVAudioPlayer выдается код ошибки Domain = NSOSStatusErrorDomain Code = -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 ...