2015-08-02 3 views
2

Это, кажется, вопрос, который я имею с переходом к Swift 2.0:Вызывающего инициализатора AVAudioRecorder - Swift 2,0

Я пытаюсь инициализировать мой AVAudioRecorder и параметром настройки (который я использовал, чтобы дать ноль) больше не согласятся. Мысли?

*var session = AVAudioSession.sharedInstance() 
     do{ 
      try session.setCategory(AVAudioSessionCategoryPlayAndRecord) 
     } catch{ 
     } 
     audioRecorder = AVAudioRecorder(URL: filePath, settings: nil) 
     audioRecorder.meteringEnabled = true 
     audioRecorder.prepareToRecord() 
     audioRecorder.record()* 

Это дает мне ошибку: **

"Cannot invoke initializer for type 'AVAudioRecorder' with an argument list type '(URL: NSURL, settings:nil)'."

**

Filepath имеет тип NSURL, кстати. Спасибо всем за вашу помощь!

ответ

5

Когда у вас есть проблемы, как это, взгляд на декларации в заголовке:

init(URL url: NSURL, settings: [String : AnyObject]) throws 

Как вы можете ясно видеть из этой декларации, почти все об этой линии не так:

audioRecorder = AVAudioRecorder(URL: filePath, settings: nil) 
  • Вы не можете указать nil. Передайте пустой словарь, если у вас нет настроек.

  • Это инициализатор throws; вы должны сказать try и приложить его в структуру do/catch.

+0

Это решает его. Это был пустой словарь, который я искал. Кроме того, спасибо за хедз-ап в инициализаторе броска. Это было бы проблемой. Исправлены оба! Еще раз спасибо! –

+0

Честно говоря, я задаюсь вопросом, является ли это ошибкой. Конечно, прохождение «нуль» здесь должно быть законным - это всегда было так. Я собираюсь сообщить об этом. – matt

+0

Apple сказала мне, что это не ошибка. Вы никогда не должны были пропустить «нуль». Необходимы настройки. – matt

Смежные вопросы