Swift的NSClassFromString转换

在swift 中使用NSClassFromString 从string 转换到 对象,报了Segmentation fault: 11 错误。

Swift 复制代码
let ctrlClass: AnyClass = NSClassFromString("HomeViewController")!
let ctrl: UIViewController = ctrlClass.init() as UIViewController

正确的写法:

Swift 复制代码
let bundleName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String
let ctrlClass = NSClassFromString(bundleName+".HomeViewController") as! UIViewController.Type;
let ctrl: UIViewController = ctrlClass.init()

NSClassFromString 在Swift中的参数不只是一个单独的类名,而是一个完整的包名加类名组成的字符串,否则会报错:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

复制代码
相关推荐
opentogether16 分钟前
PODS_ROOT、BUILT_PRODUCTS_DIR和SRCROOT有什么区别
ios
90后的晨仔3 小时前
Socket 与 WebSocket 的区别是啥?
ios
林晨月5 小时前
SwiftUI 国际化
ios
Funny Valentine-js6 小时前
swift菜鸟教程1-5(语法,变量,类型,常量,字面量)
开发语言·ios·swift
界面开发小八哥8 小时前
支持iOS与Android!SciChart开源金融图表库助力高效开发交易应用
android·ios·数据分析·数据可视化·图表工具·scichart
returnShitBoy9 小时前
Swift 的主要特点和优点或缺点是什么?
开发语言·ios·swift
鸿蒙布道师1 天前
鸿蒙NEXT开发资源工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
season_zhu1 天前
iOS开发:关于路由
ios·架构·swift
鸿蒙布道师1 天前
鸿蒙NEXT开发设备相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
熊猫鹏-梓潼1 天前
Swift Programming All in One苹果程序开发自学之路
开发语言·ios·swift