类型不符合协议'AVCaptureFileOutputRecordingDelegate'

Tar*_*ski 3 audio macos compiler-errors swift

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

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

我如何解决它?

有错误的类

PS我正在为OS X开发,如果这意味着在这种情况下.

Cod*_*der 6

更新了Swift 4.0的答案:

Apple文档.

import AVFoundation

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

Swift 3.0的原始答案:

func capture(_ captureOutput: AVCaptureFileOutput!, 
    didFinishRecordingToOutputFileAt outputFileURL: URL!, 
    fromConnections connections: [Any]!, 
    error: Error!) { }
Run Code Online (Sandbox Code Playgroud)


brd*_*uca 5

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

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

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

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