根据后台的返回字段,创建不同的类,以满足动态界面的展示需求
分2种情况,一种是由后端穿字符串,转换原生类,一种是本地类 通用化转换
目前转换类有2个方法 classForCoder()和NSClassFromString()
第一种转换,自带命名空间,第二个单纯的类名
1、获取命名空间-CFBundleExecutable这个键对应的值就是项目名称,也就是命名空间
let nameSpace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
2、转化:
let classType:AnyClass? = NSClassFromString(nameSpace + "." + className)
如果是classForCoder()不需要以上操作
{
var classType:AnyClass?
---------------------------------
Item.classType = TestController.classForCoder()
打印Item.classType ,
输出为:"项目名.TestController"
}
3、通过类创建对象 将anyClass转换为指定的类型
let viewController = classType as! UIViewController.Type
4、通过class创建对象
let vc = viewController.init()
至此完成
网友评论