2017-06-07 3 views
1

Ich bin derzeit in Swift 3.1 und der folgende Code kompiliert nicht.Klasse, die Protokoll als Funktionsparameter in Swift Error

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()) 

Die Fehlermeldung sagt

Rischer Parameter 'T' konnte nicht

Antwort

3

Der Fehler ein wenig irreführend ist abgeleitet werden, aber Sie vermissen das Argument Label. Sie müssen dies tun:

foo(view: MyView()) 

oder wenn Sie die Notwendigkeit, es entfernen wollen könnten Sie die Methodendefinition dies ändern:

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

Entweder Version wird funktionieren.

+0

Ha das war dumm von mir! Die Fehlermeldung hat überhaupt nicht geholfen –

Verwandte Themen