Swift-04-如何从一个字符串创建一个类

  • OC中,我们可以通过下面的方法轻松创建一个类
 NSClassFromString(<#NSString * _Nonnull aClassName#>)
  • Swift,调用这个方法后,创建的类却一直为空,WTF!正确的姿势是,要先获得命名空间,拼接"命名空间"+"."+"对应的字符串".
  • 1.在Swift中, 如果想通过字符串创建一个类, 那么必须加上命名空间, 类型是可选类型,所以要解包
let nameSpace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"]
 guard let ns = nameSpace as? String else{
            return
        }
  • 2.动态获取的命名空间是不包含"."的, 所以需要我们自己手动拼接, 类型依然是可以选的.将AnyClass类型转换为你想要创建的类型,这里用UIViewController做例子
let myClass: AnyClass? = NSClassFromString(ns + "." + "对应的字符串")
  guard let myClassType = myClass as? UIViewController.Type else{
            return
        }
  • 这样就完成了根据字符串,自定义创建一个类了myClassType,就是我们要的类,可以拿来实例化了.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容