web-dev-qa-db-ja.com

Swift 3変換エラー/ NSError

Swift 3(Swift/objective-cコードの約半分/半分を含むプロジェクト)に移行しようとすると、問題が発生します。この特定のプロトコルをobjective-cで宣言します。この:

_@protocol AProtocolDeclaration <NSObject>

- (void)someEventHappened:(nullable NSError *)error;

@end
_

Swiftコンパイラーは、上記のプロトコル宣言に対して以下を生成します。

_public protocol AProtocolDeclaration : NSObjectProtocol {

    public func someEventHappened(_ error: Error?)
}    
_

また、プロトコルをconcrete class (in Swift)に実装し、生成されたメソッドを定義しようとすると、次のようなエラーが発生し続けます:cannot convert _Error to NSError_。このエラーを修正する方法がわかりません。誰か提案してもらえますか?

11
Anand

これはXcode8のSourceKitのバグだと思います。Xcode8.1および8.2ベータ2の時点で、プロトコル関数にはNSErrorパラメータが含まれていますSwift 3 as Error

extension MyClass: AProtocolDeclaration {
    func someEventHappened(_ error: Error?) {
        print(error ?? "none")
    }
}
0
JAL