加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解

发布时间:2020-12-14 05:14:58 所属栏目:百科 来源:网络整理
导读:▲点击上方“ CocoaChina ”关注即可免费学习iOS开发 原文链接:http://blog.csdn.net/wang631106979/article/details/52825510 在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案:

▲点击上方“CocoaChina”关注即可免费学习iOS开发


原文链接:http://blog.csdn.net/wang631106979/article/details/52825510


在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案:


问题的发现过程


UIViewController *destinationVC = [[NSClassFromString(demoInfoModel.demoVCName) alloc] init];

[self.navigationController pushViewController:destinationVC animated:YES];


在使用以上代码时发现,Swift的通过类名在OC中通过NSClassFromString获取不到这个类

,返回值为nil


问题的原因和解决方法


经过一番查找后发现是因为在OC中Swift类中的所有类的接口都转到了一个叫YourProduct_Example-swift.h的头文件中,YourProduct是你的工程名,其中的类名和方法都已经改变了,我们需要做的就行进入到这个头文件中,去找到对应的类名就行了,如下图所示:



这里写图片描述

红框里面的字符串就是你Swift里面转成OC后的类名,将之前的类名替换就行了,比如:


// 我之前的类名是WCLLoadingViewViewDemoVC

NSClassFromString(@"WCLLoadingViewViewDemoVC")

// 替换到OC中就是_TtC19CRAnimation_Example20WCLLoadingViewDemoVC

NSClassFromString(@"_TtC19CRAnimation_Example20WCLLoadingViewDemoVC")


通过以上步骤就能转换成功了



微信号:CocoaChinabbs


▲长按二维码“识别”关注即可免费学习 iOS 开发

月薪十万、出任CEO、赢娶白富美、走上人生巅峰不是梦

--------------------------------------

商务合作QQ:2408167315

投稿邮箱:support@cocoachina.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读