私はほぼ同じ2つの関数を持っていますが、それらを1つにマージしたいのですが、if-letステートメントで型キャストを処理する方法を見つけることができません。私が考えることができるソリューションは2つしかありませんが、どちらも実行できません。ここで 変数を使ってSwiftにキャストを入力する3
は(彼らに多くのがありますが、これは、マージで私のトラブルを引き起こしている部分のみである)二つの関数です: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
}
}
私の最初の試みは可能性が一般的なパラメータを作ることでしたEventViewControllerまたはFinalViewControllerのいずれかを受け入れることができますが、私が知る限り、論理的なANDのみの汎用的なパラメータの論理ORはありません。
私の2番目の試みはコンピュータ変数を作成することでしたが、これはどちらもうまくいかなかった。
if-letブロックのいずれかのクラス型にキャストできるように、関数呼び出しでどのように引数を取ることができますか?
例: func loadViewController(identifier: String, viewControllerType: UIViewController)
私は中-elseステートメントを使用して非常に不格好な方法でこの問題を解決してきましたが、私はこの問題を解決するためのよりエレガントな方法を見つけるしたいと思います。あなたがあなたの代わりにswitchステートメントを使用することができますif文ので、同じように、使用しないようにしたい場合は
let eventVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("EventViewController")
load(eventVC)
:
ようにそれを行うことができますあなたのBJHStudiosをありがとう! –