Swift中字符串轉化為Class的方法


Swift中字符串轉化為Class的方法

在開發中有時候會根據字符串進行對應類的轉化,這樣我們就可以動態根據服務器返回的字段,動態的加載類,比如優酷,微博等APP會在節假日等動態的TabBar。這樣可以把蘋果審核的風險給排出。

在OC中根據一段字符串轉化為類,可以很方便的進行,只需要使用NSClassFromString 即可

NSClassFromString(@"NewsViewController")

但是在Swift中由於命名空間的存在導致這樣的轉化,會有一定的麻煩,我們可以用下面的方法進行轉化。

func getClass(stringName: String) -> Class {
//根據字符串獲取對應的class,在Swift中不能直接使用

//Swift中命名空間的概念
guard let nameSpage = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String else {
    print("沒有命名空間")
    return
}

guard let childVcClass = NSClassFromString(nameSpage + "." + vcName) else {
    print("沒有獲取到對應的class")
    return
}

guard let childVcType = childVcClass as? UIViewController.Type else {
    print("沒有得到的類型")
    return
}

//根據類型創建對應的對象
let vc = childVcType.init()

return vc

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM