关于OC与Swift混编过程中 “xxxx-Swift.h”未找到的问题

关于OC与Swift混编过程中 “xxxx-Swift.h”未找到的问题

在对OC与Swift混编中,加了3个target:
关于OC与Swift混编过程中 “xxxx-Swift.h”未找到的问题_第1张图片
但是在混编过程中,某两个Target 提示找不到 “xxxxx-Swift.h”
在网上找了很多资料,说“xxxx-Swift.h”名字必须与工程名一样,于是乎加了3个预编译宏,区分:

#if TPELD_Enterprise
#import TPELD_Enterprise-Swift.h"
#elif TPELD_Prerelease
#import "TPELD_Prerelease-Swift.h"
#else 
#import "TPELD_Company-Swift.h"
#endif

这几个宏定义,是在build Setting 里面,如下图:
关于OC与Swift混编过程中 “xxxx-Swift.h”未找到的问题_第2张图片
只有在切换到TPELD_Enterprise后才能正常编译,否则,都提示找不到-Swift.h文件

找资料找了很久,总结出两个问题,在此记录一下:

  1. 在Swift里,貌似这个预编译if else指令不太管用,都不能进入到 elif判断
  2. 在排查问题后发现生成的-Swift.h文件名不对,如下图
    关于OC与Swift混编过程中 “xxxx-Swift.h”未找到的问题_第3张图片
    解决方法
    分别在三个Target中,找到 Objective-C Generated Interface Header Name,统一都修改为TPELD_Company-Swift.h,然后去掉上面一堆繁琐的预编译判断,只留下#import TPELD_Company-Swift.h,也就是说在每一个Target中,都去强制生成TPELD_Company-Swift.h文件,不以工程名判断,这样就能顺利的通过编译,而且也可以区分不同的Target了。

你可能感兴趣的:(工作总结)