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

复制代码
相关推荐
GitLqr6 小时前
数码洞察 | Apple VS DMA、三星新品、Android 16KB Page Size
android·ios·samsung
钟智强11 小时前
Flutter 前端开发中的常见问题全面解析
android·前端·flutter·ios·前端框架·dart
YungFan15 小时前
iOS26适配指南之UITabBarController
ios·swift
我唔知啊15 小时前
OC底层原理4:KVO(本质、动态生成子类、如何手动触发)
ios
iReaShare15 小时前
如何在 iPad 上批量删除应用:5 种简单方法
ios
Digitally18 小时前
如何将 iPhone 备份到云端:完整指南
ios·iphone
2501_9159184118 小时前
iOS App 安全加固全流程:静态 + 动态混淆对抗逆向攻击实录
android·ios·小程序·https·uni-app·iphone·webview
瓜子三百克20 小时前
RxSwift的介绍与使用
ios·swift·rxswift
2501_915909061 天前
iOS如何查看电池容量?理解系统限制与开发者级能耗调试方法
android·ios·小程序·https·uni-app·iphone·webview
Magnetic_h1 天前
【iOS】方法与消息底层分析
笔记·学习·macos·ios·objective-c·cocoa