iOS

Swift将字符串转化成类

2021-09-24  本文已影响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应用中的所有类名都必须是全局唯一的。

上一篇 下一篇

猜你喜欢

热点阅读