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

复制代码
相关推荐
Student_Zhang18 小时前
一个管理项目中所有弹窗的弹窗管理器(PopupManager)
前端·ios·github
denggun1234518 小时前
使用 os_unfair_lock 替代 DispatchQueue?!
ios
2501_9151063221 小时前
iOS 抓包工具有哪些?不同类型的抓包工具可以做什么
android·ios·小程序·https·uni-app·iphone·webview
一点晖光1 天前
ios底部按钮被挡住
前端·ios·微信小程序
chinesegf1 天前
iTunes Lookup API 规则具体(查包名)
ios
C+++Python2 天前
iOS 长截图
ios
货拉拉技术2 天前
iOS疑难Crash-_dispatch_barrier_waiter_redirect_or_wake 崩溃治理
ios
chinesegf2 天前
iOS 内购收据验证的基础实现
ios
TheNextByte12 天前
如何在没有 Wi-Fi 的情况下备份 iPhone
ios·iphone
2501_915106322 天前
iOS开发中CPU功耗监控的实现与工具使用
android·macos·ios·小程序·uni-app·cocoa·iphone