2016-09-20 10 views
1

私はXCode8 /スウィフト3このエラーを修正する方法「エラー」は、この文脈でタイプの検索に曖昧であるMultipeer接続

'Error' is ambiguous for type lookup

にアップデートした後、このエラーを取得しますか?

ありがとうございました!

+0

偶然、あなたのプロジェクトに 'Error'クラス/構造体がありますか? Swift 3では、システムクラス 'NSError'が' Error'に改名されました – Losiowaty

+0

問題を再現するコードをコピーできるように、スクリーンショットではなくテキストを入力してください – Mark

答えて

4

これは、独自のErrorタイプを持つタイプの中で最も一般的です。たとえば:あなたはグローバルErrorタイプを宣言した場合

class MyClass { 
    enum Error { 
     ... 
    } 
    ... 
} 

にも発生することができます。 Swift 3より前のこれは問題ありませんでしたが、Swift 3では新しいstdlib Errorタイプと衝突します。これを修正するには、Errorタイプの名前を変更するか、(より一般的には)どのモジュールを引き出すのかを明示する必要があります。したがって、このコード行は次のようになります。

... withError error: Swift.Error?) { 
+0

エラータイプを宣言していないので変です。しかし、Swift.Errorはうまくいった! 'Error'と' Swift.Error? 'について、 –

+0

ありがとうございます。 「エラー」はタイプであいまいです。 OK。 'Swift.Error'とは何ですか? – Honey

+1

"Swift"は標準ライブラリモジュールの名前です。 Swift.Errorはstdlibにある "Error"シンボルです。それは単なる完全修飾シンボルです。 Swiftのすべてのプログラムでは、 "Swift import"を暗黙的に取得します。だからそれはあいまいではない。それは非常に具体的です。 :)元のコードでOPが "Error"でクリックされた場合、OPは他のモジュールが独自のErrorシンボルを定義しているものになります。 –

関連する問題