在桥接头文件

时间:2018-05-25 11:26:47

标签: objective-c swift bridging-header objc-bridging-header

我有一个在constant.h文件中的枚举(Objective-C)

typedef NS_ENUM (NSInteger, EEFieldType) {
  EEFieldTypeHighFields = 1,
  EEFieldTypeMediumFields = 2,
  EEFieldTypeLowFields = 3
};

我有一个桥接文件连接到swift代码并导入一个文件名为profile的文件。

(ModuleName-Bridging-Header.h)

#import "Profile.h" 

使用以下方法的配置文件,该方法未在代码中编译。

- (EEFieldType)fieldTypeByPFType;

错误:预计EEFieldType上的类型。

1 个答案:

答案 0 :(得分:1)

[答案移动并从评论中扩展]

有关使用评论中添加的预编译头文件(.pch)的其他信息,您的问题归结为Swift不使用.pch文件 - 它们是Objective-C编译器功能。

在Objective.c中Profile.h编译它所依赖的标题constant.h,由.pch导入。

在Swift Profile.h中产生缺失的类型错误,因为它不导入定义类型的constant.h

只需在constant.h中导入Profile.h

注意:这样做不仅适用于Swift,它继续对Objective-C正常工作 - .pch功能是一个加速头处理的编译器选项,Objective-C编译器将继续使用它,当它在constant.h中看到Profile.h导入时,它会轻松跳过.pch已导入的内容。