专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

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

Cocoa开发者社区  · 公众号  · ios  · 2016-11-01 08:14

正文

▲点击上方“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

投稿邮箱:[email protected]