最近被Swift和OC混编折磨了许久,许多问题都一知半解,现在记录一下在使用自己的framework时,遇到一个问题。
Swift App工程导入了混合OC+Swift的Swift Framework,在使用其中的Swift类时报错:
'XXXX' is unavailable: cannot find Swift declaration for this class
奇怪了,Swift代码调用Swift Framework中的Swift类,居然找不到申明。
但是用OC类引用framework中的Swift类时,却是可以使用,而且编译也没有问题。无语中...
最后在stackoverflow看到一个解决方案,才顺利解决,现在记录一下解决方案。
- 首先创建完通用framework后,执行一下步骤:
1、打开合并之前的Release-iphoneos和Release-iphonesimulator包
2、进入XXXX.framework/Modules/XXXX.swiftmodule
3、复制文件.swiftdoc
和.swiftmodule
4、打开通用framework
5、进入XXXX.framework/Modules/XXXX.swiftmodule
6、粘贴在步骤3中的文件
最后的通用框架包路径XXX.framework/Modules/XXX.swiftmodule/
应包含以下文件:
arm.swiftdoc
arm.swiftmodule
arm64.swiftdoc
arm64.swiftmodule
i386.swiftdoc
i386.swiftmodule
x86_64.swiftdoc
x86_64.swiftmodule
因为Swift编译器需要每个架构的swiftmodule映射文件。
好了,到这里就解决了Swift App工程导入了混合OC+Swift的Swift Framework,使用其中的Swift类时报错的问题。
终于解决了,真是心累呀!!!
参考文献:https://stackoverflow.com/questions/35030199/myclass-is-unavailable-cannot-find-swift-declaration-for-this-class