關于swift中通過字符串創建類的坑

在swift開發中,也是通過用字符串創建類也是通過NSClassFromString函數進行的。

  1. NSClassFromString的返回值是AnyClass 類型在書寫的時候要標記為可選。
    2.OC中可以直接通過類名字符串創建類,但是swift中需要完整的命名空間,獲取完整命名空間的方法
    let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
    3.然后將Anyclass類型轉變為指定類型
    4.創建對象
    具體步驟代碼如下
    // 1.獲取命名空間
    let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
    // 2.通過命名空間和類名轉換成類
    let cls:AnyClass? = NSClassFromString(clsName + "." + childControllerName)
    //3將anyClass轉變為指定類型
    let vcType = cls as! UIViewController.Type
    //4通過VCClas創建對象
    let vc = vcType.init()

注意!!!
當你的工程名字中含有“-” 例如swift-sina時用上述方法創建的類,返回值是nil,通過打印可以看到self


self圖片.png

只能自己書寫 將“-”換成“_”.

----------swift繼續填坑--------

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容