Überprüfen Sie, ob die optionale Protokollmethode in Swift implementiert ist.
Ich habe einen swift-Protokoll:
@objc protocol SomeDelegate {
optional func myFunction()
}
Ich einer meiner Klassen habe ich:
weak var delegate: SomeDelegate?
Nun möchte ich prüfen, ob die delegate
hat myFunction
umgesetzt.
In objective-c, die ich tun kann:
if ([delegate respondsToSelector:@selector(myFunction)]) {
...
}
Aber dies ist nicht verfügbar in Swift.
Edit: Das ist Verschieden: Was ist der swift-äquivalent respondsToSelector? konzentriere ich mich auf das Klasse-Protokolle nicht auf Klassen.
Wie kann ich überprüfen, ob meine Stellvertretung hat eine optionale Methode implementiert?
Kommentar zu dem Problem
Sind Sie sicher, dass diese stackoverflow.com/a/27665147/1187415 oder stackoverflow.com/a/28078301/1187415 Antwort auf die referenzierte thread keine Antwort auf Ihre Frage? Martin R
Jetzt nicht, welche version von Swift verfügbar war, wenn die Frage gestellt wurde, aber in der swift-2.2 Sie verwenden können, respondsToSelector
InformationsquelleAutor der Frage confile | 2015-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pro Die Swift-Programmiersprache:
Also die Absicht ist nicht, dass Sie überprüfen, ob die Methode implementiert wird, ist es, dass Sie versuchen, es zu nennen, unabhängig und bekommen auf Wunsch zurück.
InformationsquelleAutor der Antwort Tommy
Können Sie tun
InformationsquelleAutor der Antwort newacct
Ich habe festgestellt, dass es erfolgreich eine Erweiterung hinzufügen, um das Protokoll definiert die grundlegenden Standard-Umsetzung und dann jede Klasse die das Protokoll braucht nur das überschreiben der Funktionen von Interesse.
dann verlängern
Nun jede Klasse benötigen, zu entsprechen, die PresenterDelegate Protokoll hat alle Funktionen bereits implementiert, so ist es jetzt optional, um es zu überschreiben-Funktionalität.
InformationsquelleAutor der Antwort Chris