Swift通过类名实例化对象

比如,我要根据NSNotification中传递的ViewController字符串创建ViewController实例。

代码如下:

1
2
3
4
5
6
let xibName=state+"ViewController"
let controllerName="SpainAppProto."+xibName

var classType: AnyObject.Type=NSClassFromString(controllerName)
var nsobjectype : UIViewController.Type = classType as UIViewController.Type
var viewController: UIViewController = nsobjectype(nibName: xibName, bundle: nil)

假设state是ViewController类的前缀。

参考了NSClassFromString() always returns nil,发现和objc编写的不同是,需要给类加上应用名称。

详细的代码,可参见我写的一个完整的示例