在swift 中能够表示 ‘任意’这个概念的除了 Any 和 AnyObject 以外,还有一个 AnyClass
定义是
typealias AnyClass = AnyObject.Type
通过 AnyObject.Type 这种方式所得到的是一个元类型(Meta)
// 获取命名空间
let namespace = Bundle.main.infoDictionary?["CFBundleName"] as? String ?? ""
// 类名字字符串
let clsName = "ViewControllerName"
// 获取具体的类
let cls = NSClassFromString(namespace + "." + clsName) as? UIViewController.Type
// 获取实例化对象
let vc = cls?.init()
//
class MusicViewController: UIViewController { }
class AlbumViewController: UIViewController { }
let userimgVCTypes: [AnyClass] = [MusicViewController.self, AlbumViewController.self]
func setupViewControllers(_ vcTypes: [AnyClass]){
for vcType in vcTypes {
if vcType is UIViewController.Type {
let vcClass = vcType as! UIViewController.Type // 获取类
let vc = vcClass.init() // 获取类实例对象
print(vc)
}
}
}
//
let tableView = UITableView()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cellId")