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,就是我们要的类,可以拿来实例化了.

你可能感兴趣的:(Swift-04-如何从一个字符串创建一个类)