关于swift中通过字符串创建类的坑

在swift开发中,也是通过用字符串创建类也是通过NSClassFromString函数进行的。

  1. 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继续填坑--------

你可能感兴趣的:(关于swift中通过字符串创建类的坑)