导入框架时的Swift类歧义

时间:2017-10-05 20:10:42

标签: ios swift class frameworks ambiguity

我目前正在项目中迁移部分资源,无法编译项目。

这是当前的配置:

  • 两个项目:main&文库
  • 包含用Swift编写的类的内部框架,所有类都使用@objc注释向Objective-C开放
  • 特殊配置:此框架具有单个Objective-C协议(以保持传统兼容性),并且所有其他Swift类都实现此协议。 Umbrella header将此协议导出为public。
  • 库项目加载此内部框架并引用Objective-C协议和Swift类
  • 主项目通过cocoapods加载库项目,并且还引用内部框架中的协议和Swift类

使用这种配置,库项目编译得很好,而主项目没有编译,在主项目中编译Swift源时发出以下错误:

error: 'CLASS_NAME' is unavailable: cannot find Swift declaration for this class
    fileprivate var VARIABLE_NAME: [CLASS_NAME]
                                    ^~~~~~~~~~
__ObjC.CLASS_NAME:2:12: note: 'CLASS_NAME' has been explicitly marked unavailable here
open class CLASS_NAME : SUPER_CLASS_NAME {

模块__ObjC似乎是指由Xcode自动生成的模块,可能与桥接头文件有关,但奇怪的是我没有从内部导入任何来源桥接头上的框架。

我用Google搜索了错误消息,似乎没有类似的问题。是否有错误的解决方法,或者这种设置在Xcode中是不可用的?我知道这对于单个应用程序项目而言过于复杂,但目前的情况是尽可能少地触及遗留代码。任何帮助或建议将不胜感激。感谢。

0 个答案:

没有答案