Swift中String转Class类名

String->Class

Swift中引入了命名空间的概念,转Class需要拼接命名空间

    
    //这是一个简单的通过字符串类名,转Class然后初始化后跳转的一个小例子
    @objc func OnClick(){
    
        //控制器字符串名称
        let vcNameString = "OneViewController"
        //获取命名空间也就是项目名称
        let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String
        
        //拼接
        let className=clsName! + "." + vcNameString
        
        //字符串转Class 需要注意的是这里的`UIViewController`强转必须带上`.Type`,否则转换不成功
        let classT = NSClassFromString(className)! as! UIViewController.Type
        
        
        URLRouter.shared.pushViewController(viewController:classT.init()  , animated: true)
    }//成功完成跳转
    
    
  • 注意
    1. Swift中引入了命名空间的概念,转Class需要拼接命名空间
    2. 这里的UIViewController强转必须带上.Type,否则转换不成功
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。