我想我已经阅读了大部分SO问题和Google的答案,但仍然无法使其正常运行。拿这个代码示例:
import UIKit
class Person: NSObject {
var name = "Pieter"
}
let PersonClass: AnyClass? = NSClassFromString("Person")
let person = PersonClass()
print(person.name)
将NSClassFromString("Person")
更改为NSClassFromString("MyAppName.Person")
并没有什么不同。也不在PersonClass声明后面添加as! NSObject.Type
。在类声明之前也不添加@obcj(Person
。
现实生活中的目标是从数据库中读取类名并相应地加载相应的storyboard / UIViewController。所以我正在寻找一种方法将UIViewController类名称作为String传递并使用它实例化UIStoryboard。
怎么做?
编辑:这是我目前在你的建议之后尝试现实场景:
let storyboard = UIStoryboard(name: "MyStoryboard", bundle: nil)
let MyClassName = "MyApp.MyTableViewController"
let MyClass = NSClassFromString(MyClassName) as! UITableViewController.Type
let controller = storyboard.instantiateInitialViewController() as! MyClass
它出错"MyClass" is not a type
。我无法将其删除,否则我将收到无法从AnyClass
转换的错误。