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

复制代码
相关推荐
水木姚姚16 小时前
图形界面控件编程(iOS)
人工智能·python·macos·ios·xcode
书弋江山20 小时前
Flutter 调用原生IOS接口
flutter·ios·cocoa
q567315231 天前
使用ASIWebPageRequest库编写Objective-C下载器程序
android·开发语言·macos·ios·objective-c·iphone
星海拾遗1 天前
debug_unpack_ios failed: Exception: Failed to codesign 解决方案(亲测有效)
flutter·ios
水木姚姚1 天前
视频软件编程(iOS)
macos·ios·objective-c·音视频·xcode
L_Jason先生1 天前
iOS 聊天 IM 消息收发管理工具
前端·ios·设计模式·cocoa·责任链模式·适配器模式
北京自在科技2 天前
苹果Siri升级遇阻,国行iPhone或将引入阿里、百度AI自救
百度·ios·ai·iphone·阿里
刘架构2 天前
第1章:项目概述与环境搭建
ios·swiftui
B.-2 天前
Flutter 实现消息推送的方法
android·学习·flutter·macos·ios·cocoa
不掰手腕2 天前
苹果商店上架流程,app上架发布流程
ios