当有多个具有公共代码的目标时,我无法生成使用ObjC中的Swift类所需的swift头。
我创建了两个目标My OSX App
和My iOS App
。这些目标共享公共代码,其中ObjC类正在调用Swift类。
如Swift and ObjC in the same project中所述,我可以将#import "My_iOS_App-Swift.h"
添加到我的ObjC类中,并从My iOS App
目标进行编译。
但是,这不会从My OSX App
目标编译,因为include需要匹配模块名称。它正在寻找#import "My_OSX_App-Swift.h"
但公共代码不使用包含。{/ p>
在多个目标之间共享的代码中混合/匹配Swift / ObjC的正确方法是什么?我可以手动更改每个目标以使用常见MyApp-Swift.h
,但这感觉不对,可能会导致其他问题。
答案 0 :(得分:3)
将构建设置中的产品模块名称设置设置为模块中的相同
例如:$(PROJECT_NAME)
如果您有针对不同目标的观看扩展程序,请使用固定名称,例如:Main_App和Watchkit
这会导致生成的### - Swift.h文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微处理器的需要。