Swift 生成的具有多个目标的标头

Jim*_*ask 0 objective-c swift

当存在多个具有通用代码的目标时,我无法生成使用 ObjC 中的 Swift 类所需的 swift 标头。

我创建了两个目标My OSX AppMy iOS App。这些目标共享 ObjC 类调用 Swift 类的通用代码。

正如同一项目中的 Swift 和 ObjC中所述,我可以添加#import "My_iOS_App-Swift.h"到我的 ObjC 类并从My iOS App目标编译它。

但是,这不会从My OSX App目标编译,因为包含需要与模块名称匹配。它正在寻找#import "My_OSX_App-Swift.h"但公共代码不使用该包含。

在多个目标之间共享的代码中混合/匹配 Swift/ObjC 的正确方法是什么?我可以手动更改每个目标以使用 common MyApp-Swift.h,但这感觉不对并且可能会导致其他问题。

Sjo*_*ors 5

将“构建设置”中的“产品模块名称”设置设置为在模块中保持相同

例如:$(PROJECT_NAME)

或者,如果您有针对不同目标的手表扩展,例如:Main_App 和 Watchkit,请使用固定名称

这会导致生成的 ###-Swift.h 文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微处理器的需要。

从:Objective C 到具有多个目标的 Swift 头文件