2016-09-11 13 views
11

Swift 3に移行しようとしている間に(私は約半分/目標-cコードの約半分を含むプロジェクトで)、私は問題に直面しています。私たちは、このようにObjective-Cの中に、この特定のプロトコルを宣言:Swift 3変換エラー/ NSError

@protocol AProtocolDeclaration <NSObject> 

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

@end 

スウィフトコンパイラは上記のプロトコルの宣言については、以下を生成します。

public protocol AProtocolDeclaration : NSObjectProtocol { 

    public func someEventHappened(_ error: Error?) 
}  

そしてconcrete class (in swift)にプロトコルを実装し、定義しようと私は何かのようなエラーが発生し続ける:Error to NSErrorを変換することはできません。このエラーを修正する方法がわかりません。誰かお勧めしますか?

+0

はこちら[見てください](https://github.com/apple/swift-evolution/blob/master/proposals/0112-nserror-bridging.md) – Carpsen90

+1

もっと具体的にしてください。あなたのエラーは "エラーをNSErrorに変換できません"というエラーがランタイムエラーまたはコンパイルエラーですか?もちろん、問題を引き起こすコードが必要です。そして、「何かのようなもの」を参照しないでください。正確なエラーメッセージをコンソールにコピーします。 – OOPer

答えて

0

私は、これはXcodeの8.1と8.2のベータ2のとおりXcodeの8のSourceKitのバグだった、プロトコル機能がNSErrorパラメータはErrorとしてスウィフト3に正しくブリッジされている含まれていると思う:

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

はい、これは確かにXCodeのバグであり、新しいXCodeでは問題なく動作しています。 – Anand

関連する問題