Swift 使用 NSClassFromString 遇到的大坑
来源:互联网 发布:湖畔网络 编辑:程序博客网 时间:2024/04/27 08:19
swift 中NSClassFromString的使用:
在swift中使用NSClassFromString时候 会常遇到这样的一个报错:unexpectedly found nil while unwrapping an Optional value
这是你的参数写错了的原因。
首先 NSClassFromString 在swift中 的参数不只是一个单独的类字符串,而是一个完整的包名加类名组成的字符串,也就是包类名字符串.也就是说需要在类名的前面加上你的工程名字 代码如下:
//获取包名 func getAPPName() -> String{ let nameKey = "CFBundleName" let appName = Bundle.main.object(forInfoDictionaryKey: nameKey) as? String //这里也是坑,请不要翻译oc的代码,而是去NSBundle类里面看它的api return appName! } let targetVC = VCdataArr[indexPath.row] as String /** * 如果你的工程名字中带有“-” 符号 需要加上 replacingOccurrences(of: "-", with: "_") 这句代码把“-” 替换掉 不然还会报错 要不然系统会自动替换掉 这样就不是你原来的包名了 如果不包含“-” 这句代码 可以不加 */ let APPName = getAPPName().replacingOccurrences(of: "-", with: "_") let ClassName:NSString = APPName + "." + targetVC as NSString guard let Cls = NSClassFromString(ClassName as String)! as? UIViewController.Type else{ NSLog("无法转换成UITableViewController") return } let VC:UIViewController = Cls.init() VC.title = dataSources[indexPath.row] self.navigationController?.pushViewController(VC, animated: true)
这样就能运行OK了!
阅读全文
0 0
- Swift 使用 NSClassFromString 遇到的大坑
- swift NSClassFromString使用
- 《swift踩过的坑》之“swift中使用NSClassFromString”
- Swift NSClassFromString撞的墙
- NSClassFromString的使用
- swift学习----记使用NSClassFromString一个坑
- initWithContentsOfFile遇到的大坑
- Swift - UITableView的基本使用与一个大坑点
- MAC OS上使用OpenGL遇到的大坑
- 最近遇到的几个大坑
- gradle 3.5遇到的大坑
- 关于Swift使用UITabelView动态加载Cell(NSClassFromString使用问题)
- 使用NSClassFromString
- 使用NSClassFromString
- 使用NSClassFromString
- 使用NSClassFromString
- 使用NSClassFromString
- 使用NSClassFromString
- Babel 基础
- charts框架 横向 纵向柱状图
- selenium用Jquery定位总结笔记(基于python语言)
- jsp中的两种include方式
- MyBatis 实践 -配置
- Swift 使用 NSClassFromString 遇到的大坑
- lhgdialog弹出窗口再弹出一级窗口时,二级窗口在一级窗口下面,如何让他到一级窗口上面?
- 数人云实践|SRE遇上金融老干部,解决发布协调&监控告警两大难题
- Freemarker *.ftl后缀文件 在 eclipse IDE以HTML格式打开
- ESLint 备忘录
- Spring Bean的生命周期
- Linux chmod 命令 说明
- Windows Server 2008 r2 64bit 运行ASP提示ADODB.Connection error ‘800a0e7a’错误解决办法
- Android studio 项目构建八|配置方法数超过 64K 的应用