NS_ENUM 添加到桥接头文件后对象无法编译

NS_ENUM object not compile after added in bridging header file

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

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

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

(模块名称-桥接-Header.h)

#import "Profile.h" 

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

- (EEFieldType)fieldTypeByPFType;

错误:需要 EEFieldType 类型。

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

在评论中添加了有关使用 pre-compiled header 文件 (.pch) 的附加信息后,您的问题归结为 Swift 没有使用 .pch 文件 – 它们是 Objective-C 编译器功能。

在Objective.c中Profile.h编译为它依赖的header,constant.h.pch导入。

In Swift Profile.h 产生缺失类型错误,因为它没有导入定义类型的 constant.h

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

注意:这样做不仅适用于 Swift 它继续正确适用于 Objective-C – .pch 功能是一个编译器选项,可以加速 header 处理Objective-C 编译器将继续使用它,当它在 Profile.h 中看到 constant.h 导入时,它将简单地跳过它,因为它已经被 .pch.[=23= 导入]