
[code]

    import UIKit
    import AVKit
    import AVFoundation
    import AssetsLibrary
    
    var documentsPath = NSTemporaryDirectory()
    var fileName: String? = ""
    
    class VideoDelegate : NSObject, AVCaptureFileOutputRecordingDelegate {
        func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!) {
            print("capture output : finish recording to \(outputFileURL)")
        }
    
        func captureOutput(captureOutput: AVCaptureFileOutput!, didStartRecordingToOutputFileAtURL fileURL: NSURL!, fromConnections connections: [AnyObject]!) {
            print("capture output: started recording to \(fileURL)")
    
        }
    }
    
[/code]

Xcode7までこのようなコードを書いてきましたが、  
Type 'VideoDelegate' does not conform to protocol
'AVCaptureFileOutputRecordingDelegate'  
このようエラーを出されたことはありませんでした。  
Xcode8 Swift3では使用出来ないのでしょうか？


CC BY-SA 3.0
2016-06-23T06:54:23.120
26993
2016-06-23T12:51:17.653
2016-06-23T12:51:17.653
13972
16926
question
swift xcode swift3
Xcode8にてAVCaptureFileOutputRecordingDelegate


Swift3の命名規則変更により外部引数名と型が変わっているためです。

[code]

    class VideoDelegate : NSObject, AVCaptureFileOutputRecordingDelegate {
    
        func capture(_ captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAt outputFileURL: URL!, fromConnections connections: [AnyObject]!, error: NSError!) {
            print("capture output : finish recording to \(outputFileURL)")
        }
    
        func capture(_ captureOutput: AVCaptureFileOutput!, didStartRecordingToOutputFileAt outputFileURL: URL!, fromConnections connections: [AnyObject]!) {
            print("capture output: started recording to \(outputFileURL)")
        }
    }
    
[/code]

第一引数のラベルは省略されるルールがなくなり、代わりに引数ラベルを取らないことを明記するため、`_`を追加する必要があります。

`didStartRecordingToOutputFileAtURL:`が`didStartRecordingToOutputFileAt:`に変わり、`NSURL`が`URL`に変わりました。

`AVCaptureFileOutputRecordingDelegate`の定義を再度確認するのが早いと思います。

* * *

詳細についてはこちらをどうぞ。

  * [Better Translation of Objective-C APIs Into Swift](https://github.com/apple/swift-evolution/blob/master/proposals/0005-objective-c-name-translation.md)
  * [Mutability and Foundation Value Types](https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md)
  * [Establish consistent label behavior across all parameters including first labels](https://github.com/apple/swift-evolution/blob/master/proposals/0046-first-label.md)


CC BY-SA 3.0
2016-06-23T08:26:01.783
26999
2016-06-23T09:24:25.873
2016-06-23T09:24:25.873
5337
5337
26993
answer