我知道您可以将变量设置为String对象,如下所示。
var str = String("I bought \(num) CDs")
然后我可以设置这样的数字吗?
之前
var stageViewController: StageBaseViewController?
switch stage {
case 1:
stageViewController = Stage01Controller()
case 2:
stageViewController = Stage02Controller()
case 3:
stageViewController = Stage03Controller()
case 4:
stageViewController = Stage04Controller()
case 5:
stageViewController = Stage05Controller()
//...
}
后的
stageViewController = Stage\(stage)Controller()
答案 0 :(得分:4)
您可以将生成VC的所有函数存储在一个数组中,并使用索引来访问它们:
let myVCs: [() -> UIViewController] = [
Stage01Controller.init,
Stage02Controller.init,
Stage03Controller.init,
Stage04Controller.init,
Stage05Controller.init,
]
然后使用stage
,我们可以
let stageController = myVCs[stage]()
但是,您是否考虑过其他任何方式?有5个阶段控制器看起来像代码气味。也许你可以创建一个StageController
并将有关特定阶段的数据传递给它?然后你可以编写如何在StageController
?
答案 1 :(得分:-1)
不幸的是,这不能在Swift
中完成,因为\()
只能在String中使用。