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
}