美文网首页
swift中字符串转为类

swift中字符串转为类

作者: 夜凉听风雨 | 来源:发表于2022-01-18 15:54 被阅读0次

    原文地址

    在OC中将字符串转成类有NSClassFromString("ClassName")这个方法可以直接使用,但在swift中无法直接使用NSClassFromString,因此稍微麻烦些。

    func classFromString(_ className:String) -> UIViewController{
        //1、获swift中的命名空间名
        var name = Bundle.main.object(forInfoDictionaryKey: "CFBundleExecutable") as? String
        //2、如果包名中有'-'横线这样的字符,在拿到包名后,还需要把包名的'-'转换成'_'下横线
        name = name?.replacingOccurrences(of: "-", with: "_")
        //3、拼接命名空间和类名,”包名.类名“
        let fullClassName = name! + "." + className
        //通过NSClassFromString获取到最终的类,由于NSClassFromString返回的是AnyClass,这里要转换成UIViewController.Type类型
        guard let classType = NSClassFromString(fullClassName) as? UIViewController.Type  else{
            fatalError("转换失败")
        }
        return classType.init()
    }
    

    注:在swift中有命名空间的概念了,在OC里没有命名空间这个概念,所以在Objective-C应用中的所有类名都必须是全局唯一的。

    相关文章

      网友评论

          本文标题:swift中字符串转为类

          本文链接:https://www.haomeiwen.com/subject/slbkhrtx.html