您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在xcode8中找不到ModuleName-Swift.h文件

在xcode8中找不到ModuleName-Swift.h文件

我在Edit 4中所做的假设被证明是正确的。如果项目有多个目标,则无法将“-Swift.h”文件全部导入到一个.m ObjectiveC文件中。

因此,必须采用一种解决方案,即更改 构建设置,并使其在不同目标上相同。这样做的改变,产生从这个属性的指令 到

还可以将“构建设置”中的“产品模块名称”设置设置为在您的模块之间相同(我将其设置为$(PROJECT_NAME)),以便生成的- Swift.h文件在所有模块中具有相同的名称。 。这消除了添加/检查预处理器宏的需要。

完成此操作后,按Alt并进入“产品”菜单,即可清理构建文件夹。由于标头名称在目标之间共享,现在可以将其一次导入.m ObjectiveC文件,并且所有目标都可以从Swift类中受益。

如果构建后仍然显示错误,请确保通过Cmd单击其名称可以从XCode到达标头。它应该打开一个包含类似于以下代码文件

SWIFT_CLASS("_TtC27ProjectName_Summary11MyClass")
@interface MyClass : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

如果需要确保正在生成这些标头,请打开终端并使用此命令

find ~/Library/Developer/Xcode/DerivedData -name "*Swift.h"

您应该为每个目标看到一个标题

这些更改之后发生在我身上的另一个问题是,它开始给我没有碰到的ObjectiveC代码带来错误。问题出在这里,是由于进口的位置:

正是在.m文件顶部的位置,#import隐藏的桥接标头可以有所作为。麻烦的通常迹象是,您收到“未知类型名称”的编译错误,其中未知类型是在Objective- C中声明的类。解决方案是,在#import隐藏的桥接头文件之前,#import .h文件也包含Objective- C文件中的未知类型的声明。这样做可能会很烦,特别是如果所讨论的Objective-C文件不需要了解此类时,它可以解决问题并允许进行编译。

最后,代码将在设备和模拟器上编译并运行!

Swift 2022/1/1 18:14:48 有553人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶