Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 实例化ViewController并将其从Swift中的字符串转换为类_Ios_Swift_Uiviewcontroller - Fatal编程技术网

Ios 实例化ViewController并将其从Swift中的字符串转换为类

Ios 实例化ViewController并将其从Swift中的字符串转换为类,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我有一个字符串数组 var arr = ["firstViewController", "secondViewController", ....] 对于每个项目,我需要实例化ViewController,如 var myVC = self.storyboard?.instantiateViewController(withIdentifier: "firstViewController") as! firstViewController 若我想从循环中实例化视图控制器,我需要从字符串生成类,

我有一个字符串数组

var arr = ["firstViewController", "secondViewController", ....]
对于每个项目,我需要实例化ViewController,如

var myVC = self.storyboard?.instantiateViewController(withIdentifier: "firstViewController") as! firstViewController
若我想从循环中实例化视图控制器,我需要从字符串生成类,但下面的代码

let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
let cls: AnyClass = NSClassFromString("\(namespace).\(className)")!

在Swift中不起作用

无法强制转换为运行时类型对象。Swift在编译时知道其所有变量的类型

现在您有了一个变量,它的值是编译器不知道的某种类型,因此编译器不能让您对类型转换的变量执行任何操作


引用:-,

在Swift中,不能强制转换为运行时类型对象。Swift在编译时知道其所有变量的类型

现在您有了一个变量,它的值是编译器不知道的某种类型,因此编译器不能让您对类型转换的变量执行任何操作


参考:-,

无需使用
NSClassFromString(:)
从循环实例化
UIViewController
。在前两行代码中,您的方向是正确的:

let nameArray = ["firstViewController", "secondViewController" /*....*/]
var controllerArray = [UIViewController?]()

for name in nameArray {
    controllerArray.append(self.storyboard?.instantiateViewController(withIdentifier: name))
}

无需使用
NSClassFromString(:)
从循环实例化
UIViewController
。在前两行代码中,您的方向是正确的:

let nameArray = ["firstViewController", "secondViewController" /*....*/]
var controllerArray = [UIViewController?]()

for name in nameArray {
    controllerArray.append(self.storyboard?.instantiateViewController(withIdentifier: name))
}
你们有并没有尝试过类似StackOverflow问题的解决方案?为什么你们需要这个?您可以将循环中的控制器实例化为
UIViewController
s,然后在需要时尝试向下转换…您是否尝试过类似StackOverflow问题的解决方案?为什么需要这个?您可以将循环中的控制器实例化为
UIViewController
s,然后在需要时尝试向下转换。。。