类型不符合协议'AVCaptureFileOutputRecordingDelegate'

时间:2016-04-23 16:57:57

标签: swift macos audio compiler-errors

我正在尝试使用AVCaptureMovieFileOutput.startRecordingToOutputFileURL将音频录制到文件中,并且该函数的语法要求输入“AVCaptureFileOutputRecordingDelegate”类型的变量。我从这个站点看到的所有帮助都说你需要把一个类作为AVCaptureFileOutputRecordingDelegate和NSObject的扩展。

问题是,我总是得到错误:类型'AVRecordDevices'不符合协议'AVCaptureFileOutputRecordingDelegate'

我该如何解决?

Class with error

P.S。我正在为OS X开发,如果这意味着在这种情况下的任何事情。

2 个答案:

答案 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!) { }

答案 1 :(得分:5)

这意味着您没有在视图控制器中实现正确的方法:

通过仔细研究一下苹果的文档,你会发现必须至少有这个:

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

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