Ich habe zwei Funktionen, die fast identisch sind, und ich möchte sie zu einer zusammenführen, aber ich kann nicht herausfinden, wie die Casting-Typ in meiner if-let-Anweisung zu behandeln. Es gibt nur zwei Lösungen, an die ich denken kann, aber ich kann keine von beiden ausführen.Verwenden einer Variablen zum Schreiben in Swift 3
Hier sind die beiden Funktionen (es ihnen viel mehr ist, aber das ist der einzige Teil, den ich Schwierigkeiten in der Zusammenführung verursacht):
func loadNextEventViewController() {
if let nextEventViewController = storyboard?.instantiateViewController(withIdentifier: "EventViewController") as? EventViewController {
// Executed code in here
}
}
func loadFinishViewController() {
if let finishViewController = storyboard?.instantiateViewController(withIdentifier: "FinishViewController") as? FinishViewController {
// Executed code in here
}
}
Mein erster Versuch, einen generischen Parameter machen sollte, die könnten akzeptiere entweder den EventViewController ODER den FinalViewController, aber soweit ich das beurteilen kann, gibt es kein logisches ODER für generische Parameter, nur logisches UND.
Mein zweiter Versuch war eine Computervariable zu erstellen, aber das hat auch nicht funktioniert.
Wie kann ich ein Argument in meinem Funktionsaufruf nehmen, das ich als Klassenart in meinen if-let Block umwandeln könnte?
Beispiel: func loadViewController(identifier: String, viewControllerType: UIViewController)
Ich habe dieses Problem in einer sehr klobig Weise gelöst durch eine in-else-Anweisung, aber ich möchte einen eleganteren Weg zur Lösung dieses Problems zu finden.
Danke BJHStudios! –