关于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继续填坑--------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容