Ich habe eine mit einigen optional
Funktionen. Mein Ziel ist es, zu überprüfen, ob eine Delegat-Funktion durch das Delegate-Objekt implementiert wird, wenn ja, führen Sie es aus, ansonsten einige Standard-Sachen.AntwortToSelector kann nicht Selektor mit mehr als einem Parameter in Swift
Ich verwende respondsToSelector
für diesen Zweck, es funktioniert gut für Funktionen, die nicht oder nur einen Parameter, aber nicht für zwei Parameter funktioniert.
Konnte jemand helfen? Danke im Voraus.
Beachten Sie, dass alle Funktionen des Delegierten-Objekt implementiert worden sind, hier ist mein Code:
@objc protocol ViewControllerDelegate: NSObjectProtocol {
optional func doSomethingWithoutParams()
optional func doSomethingWithOneParam(controller: ViewController)
optional func doSomethingWithTwoParams(controller: ViewController, secondParam: String)
}
class ViewController: UIViewController {
weak var delegate: ViewControllerDelegate?
@IBAction func onButtonClicked(sender: AnyObject){
if (delegate != nil && delegate!.respondsToSelector(Selector("doSomethingWithoutParams"))) {
// Entered here
}
else{
NSLog("doSomethingWithoutParams is not implemented")
}
if (delegate != nil && delegate!.respondsToSelector(Selector("doSomethingWithOneParam:"))) {
// Entered here
}
else{
NSLog("doSomethingWithOneParam is not implemented")
}
if (delegate != nil && delegate!.respondsToSelector(Selector("doSomethingWithTwoParams::"))) {
NSLog("doSomethingWithTwoParams is implemented")
}
else{
// Entered here
NSLog("doSomethingWithTwoParams is not implemented")
}
}
}
Welche Version von Xcode sind Sie auf:
ersetzt werden durch? Die Auswahlsyntax wurde für 7.3 geändert. – dpassage
Sie sollten dieses Muster in swift vermeiden. Verwenden Sie stattdessen die optionale Verkettung. – Shripada
Ich verwende XCode 7.2.1. – dichen