2016-04-23 3 views
3

Я пытаюсь использовать AVCaptureMovieFileOutput.startRecordingToOutputFileURL для записи звука в файл, а синтаксис функции запрашивает переменную типа «AVCaptureFileOutputRecordingDelegate». Вся помощь, которую я видел с этого сайта, говорит о том, что вам нужно сделать класс расширением AVCaptureFileOutputRecordingDelegate и NSObject.Тип не соответствует протоколу «AVCaptureFileOutputRecordingDelegate»

Проблема, я всегда получаю ошибку: Тип «AVRecordDevices» не соответствует протоколу «AVCaptureFileOutputRecordingDelegate»

Как я могу это исправить?

Class with error

P.S. Я разрабатываю для OS X, если это означает что-нибудь в этой ситуации.

ответ

4

Это означает, что вы не имеете правильные методы, реализованные в контроллере представления:

Принимая пристальный взгляд на apple's DOCS вы увидите, что является обязательным, по крайней мере, это:

func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!) 
    { 
    } 

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureFileOutputRecordingDelegate_Protocol/

+0

Спасибо! Я не заметил эту функцию в документации! –

6

Обновленный ответ для Swift 4.0:

Apple documentation.

import AVFoundation 

extension ViewController: AVCaptureFileOutputRecordingDelegate { 
    func fileOutput(_ output: AVCaptureFileOutput, 
        didFinishRecordingTo outputFileURL: URL, 
        from connections: [AVCaptureConnection], 
        error: Error?) { 
     // Handle output 
    } 
} 

Оригинальный ответ на Swift 3.0:

func capture(_ captureOutput: AVCaptureFileOutput!, 
    didFinishRecordingToOutputFileAt outputFileURL: URL!, 
    fromConnections connections: [Any]!, 
    error: Error!) { } 
Смежные вопросы