Swift Eigenschaft, die einem Protokoll und einer Klasse entspricht
@property (strong, nonatomic) UIViewController<UITableViewDelegate> *thing;
Ich möchte eine Eigenschaft wie in diesem Objective-C-Code in Swift implementieren. Also hier ist was ich ausprobiert habe:
class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController {
var thing: T!
}
Dies kompiliert. Mein Problem tritt auf, wenn ich Eigenschaften aus dem Storyboard hinzufüge. Das@IBOutlet
tag erzeugt einen Compilerfehler.
class AClass<T: UIViewController where T: UITableViewDelegate>: UIViewController {
@IBOutlet weak var anotherThing: UILabel! // error
var thing: T!
}
Der Fehler
Variable in a generic class cannot be represented in Objective-C
Ich implementiere dieses Recht? Was kann ich tun, um diesen Fehler zu beheben oder zu umgehen?
BEARBEITEN
Swift 4 hat endlich eine Lösung für dieses Problem. Siehe meine aktualisierte Antwort.