2017-06-07 5 views
1

私は現在Swift 3.1に入っており、次のコードはコンパイルされません。Swiftエラーの関数パラメータとしてプロトコルに準拠するクラス

protocol HeaderDisplayable { 
    func setTitle(_ string: String) 
} 

class MyView: UILabel, HeaderDisplayable { 
    func setTitle(_ string: String) { 
     self.text = string 
    } 
} 

func foo<T: UILabel>(view:T) where T: HeaderDisplayable{ 
    view.setTitle("HEY") 
} 

foo(MyView()) 

エラーメッセージが

ジェネリックパラメータ「T」のエラーは少し紛らわしいです

答えて

3

推測することができませんでしたと言っているが、あなたは、引数のラベルが欠落しています。

foo(view: MyView()) 

をしたり、それの必要性を削除したい場合は、これにメソッド定義を変更することができます:あなたはこれを実行する必要が

func foo<T: UILabel>(_ view:T) where T: HeaderDisplayable{ 
    view.setTitle("HEY") 
} 

いずれかのバージョンが正常に動作します。

+0

私は馬鹿だった!エラーメッセージはまったく役に立たなかった –

関連する問題