关于swift中通过字符串创建类的坑
2016-12-29 本文已影响216人
RainyHand
在swift开发中,也是通过用字符串创建类也是通过NSClassFromString函数进行的。
- NSClassFromString的返回值是AnyClass 类型在书写的时候要标记为可选。
2.OC中可以直接通过类名字符串创建类,但是swift中需要完整的命名空间,获取完整命名空间的方法
let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
3.然后将Anyclass类型转变为指定类型
4.创建对象
具体步骤代码如下
// 1.获取命名空间
let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
// 2.通过命名空间和类名转换成类
let cls:AnyClass? = NSClassFromString(clsName + "." + childControllerName)
//3将anyClass转变为指定类型
let vcType = cls as! UIViewController.Type
//4通过VCClas创建对象
let vc = vcType.init()
注意!!!
当你的工程名字中含有“-” 例如swift-sina时用上述方法创建的类,返回值是nil,通过打印可以看到self
self图片.png
只能自己书写 将“-”换成“_”.
----------swift继续填坑--------