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





Для лучшего понимания также покажите фрагмент кода