#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 уровень, мой голос «За» не учитывается, извините. Но все равно благодарен 🙂