Невозможно воспроизвести файл из документов в AVAudioPlayer

У меня есть файл в папке с документами приложения, и я хочу его воспроизвести.

if NSFileManager.defaultManager().fileExistsAtPath(pathString) {
    let url = NSURL(fileURLWithPath:pathString, isDirectory: false)
    do {
        let player = try AVAudioPlayer(contentsOfURL:url)
        player.prepareToPlay()
        player.play()
    }
    catch let error as NSException {
        print(error)
    }
    catch {}
}

В файловой системе есть файл, и я проверил его наличие. Также выполняются все строки в блоке do. Здесь нет ни исключений, ни ошибок, но звук не воспроизводится. Каковы возможные проблемы и как их решить?

 aakpro02 июл. 2016 г., 07:48
Единственной проблемой с кодом был audioPlayer, который должен быть установлен глобально !!!

Ответы на вопрос(1)

Решение Вопроса

од будет освобожден сразу после вызова .play ()

class ViewController: UIViewController {

    var audioPlayer = AVAudioPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        if NSFileManager.defaultManager().fileExistsAtPath(pathString){
        let url = NSURL(fileURLWithPath:pathString, isDirectory: false)
        AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
        AVAudioSession.sharedInstance().setActive(true, error: nil)

        var error:NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    }
}
}
 AlvinfromDiaspar08 нояб. 2016 г., 22:02
В этом фрагменте разве вы не создаете аудиоплеер дважды? Один раз при создании экземпляра представления и второй раз, когда представление вызывает viewDidLoad. Если это так, как бы вы сделали это, чтобы он был создан только один раз?
 FredericP02 июл. 2016 г., 07:56
Кстати, вам придется изучать и понимать локальные и глобальные переменные, а также управлять памятью в Swift ... Удачи!
 aakpro01 июл. 2016 г., 21:24
Еще не работает! У вас есть идеи, как понять, в чем проблема? Или как это отладить?
 Rahul Patel09 нояб. 2016 г., 08:59
@AlvinfromDiaspar попробуйте написатьvar audioPlayer : AVAudioPlayer! вместо'var audioPlayer = AVAudioPlayer()
 FredericP02 июл. 2016 г., 01:12
Вы уверены, что изменили audioPlayer на глобальный? Это должно работать так ...
 aakpro02 июл. 2016 г., 07:47
Спасибо человек, это сработало!

Ваш ответ на вопрос