В своем приложении я установил параметр воспроизведения, когда пользователь нажимает кнопку, звуковое описание при распознавании изображения, но я не могу выбрать, какой файл я хочу воспроизвести. Мой аудиофайл хранится внутри массива
Вот код, который я использую для воспроизведения одного аудиофайла:
func listenAudio(){
guard let url = Bundle.main.url(forResource: "afraid-of-destiny", withExtension: ".mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
self.player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
guard let player = self.player else { return }
player.play()
self.audioButton.setTitle("Stop", for: UIControl.State.normal)
self.player!.play()
} catch let error {
print(error.localizedDescription)
}
}
Я думал использовать if/else, но это не работает
Я имею в виду, что я сохранил звук таким образом, после импорта этого внутри Xcode: «аудио1», «аудио2», «аудио3»,
Если ваши аудиофайлы представляют собой массив строк, сделайте следующее:
func listenAudio(soundIndex: Int){
guard let url = Bundle.main.url(forResource: audioFileArray[soundIndex], withExtension: ".mp3") else { return }
...
}
Спасибо, но теперь, когда я вызываю self.audioButton.value(forKey: String) = factImageInformation.audio, Xcode выдает мне ошибку: «Невозможно вызвать значение» со списком аргументов типа «(forKey: String.Type)».
Может это другая проблема? Если нет, вы можете обновить приведенный выше пример кода своим текущим кодом.
Что вы имеете в виду, что ваш аудиофайл хранится внутри массива?