Не работает AVAudioRecorder

#ios #swift #avaudiorecorder

#iOS #swift #avaudiorecorder

Вопрос:

Не удается получить код для AVAudioRecorder работы с URL. Кто-нибудь смог заставить запись звука работать на iOS и Swift 3? Выделенный жирным шрифтом текст ниже — это то место, где я получаю следующую ошибку:

«Не удается вызвать инициализатор для типа ‘AVAudioRecorder’ со списком аргументов типа ‘(url: URL, настройки …»

 override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    //Dispose of any resources that can be recreated.
}

func setupRecorder(){
    let recordSettings = [AVFormatIDKey : kAudioFormatAppleLossless,
                          AVEncoderAudioQualityKey : AVAudioQuality.max.rawValue,
                          AVEncoderBitRateKey : 320000,
                          AVNumberOfChannelsKey : 2,
                          AVSampleRateKey : 44100.0 ] as [String : Any]

    var error : NSError?

    func getCacheDirectory() -> String {
        let paths = NSSearchPathForDirectoriesInDomains(.cachesDirectory,.userDomainMask, true)

        return paths [0]
    }

    func getFileURL() -> URL {
        let path = (getCacheDirectory() as NSString).strings(byAppendingPaths: ["fileName"])
        let filePath = URL(fileURLWithPath: "path")
        return filePath
    }

    // Error on the following line
    soundRecorder = try AVAudioRecorder(url: getFileURL() as URL, settings: recordSettings, error: amp;error)


    if let err = error {
        NSLog("There was an error")
    }
    else {
        soundRecorder.delegate = self
        soundRecorder.prepareToRecord()
    }
  

Ответ №1:

В Swift вы не предоставляете error параметр, поскольку он throws .

Измените это:

 soundRecorder = try AVAudioRecorder(url: getFileURL() as URL, settings: recordSettings, error: amp;error)
  

Для:

 soundRecorder = try AVAudioRecorder(url: getFileURL() as URL, settings: recordSettings)
  

Комментарии:

1. Спасибо, что сработало! Я помещу это в do / catch и выполню.

2. Новый пользователь, написано, что <15 уровень, мой голос «За» не учитывается, извините. Но все равно благодарен 🙂