首页 > 解决方案 > 在objective-c模块中使用swift时无法构建Objective-C模块

问题描述

在 iOS 应用程序中,我有一个子项目(不是 cocoapods),其中包含一个 swift 文件和 ObjC 文件(由 swift 文件使用)。XCode 自动创建了一个桥接文件,但无法构建它,因为框架中显然不允许桥接。我使用的解决方法是将objective-c 标头添加到伞形文件中并且它起作用了。现在我需要使用来自 ObjC 的 swift 类。我必须define module设置为 YES,生成的文件 Framework-Swift.h 。但是当我尝试在objective-c中导入它时,我得到了

无法构建 Objective-C 模块

谷歌搜索后我得到的最接近的是这个答案:

啊,明白了。看起来您正在构建一个混合的 Swift 和 Objective-C pod - 如果是这种情况,Xcode 将尝试在生成的 -Swift.h 标头中导入。您需要手动创建标头并为要公开给 Swift 的 Objective-C 类添加导入。

CocoaPods 自动生成一个伞头文件并将其导入到 .modulemap 中,但 Xcode 在生成 -Swift.h 头文件时不使用它

但我不确定需要手动创建什么标题。关于在objective-c框架中使用swift的任何想法或指针?两种方式?

标签: iosobjective-cswiftxcodebridging-header

解决方案


在包含多个目标的 Swift 项目中使用 Swift pod 时,我也遇到了类似的问题。根本没有 Objective-C 代码。我试图清除构建文件夹、pod 缓存、派生数据 - 没有任何效果。

解决方案:

打开包含您的模块代码的目标的构建设置。将“安装 Objective-C 兼容性标头”设置为“否”

在此处输入图像描述


推荐阅读