1

我有一个在 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 上的类型。

4

1 回答 1

3

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

通过在注释中添加有关使用预编译头文件 ( .pch) 的附加信息,您的问题归结为 Swift 不使用.pch文件——它们是 Objective-C 编译器的功能。

在 Objective.cProfile.h中编译为它所依赖的头文件,constant.h, 由.pch.

在 SwiftProfile.h中会产生缺少类型的错误,因为它没有导入constant.h定义类型的内容。

只需导入constant.h.Profile.h

注意:这样做不仅适用于 Swift,它还适用于 Objective-C——该.pch功能是一个编译器选项,用于加速标头处理,并且 Objective-C 编译器将继续使用它,当它看到其中的constant.h导入Profile.h时会简单地跳过它,因为.pch.

于 2018-05-28T01:01:37.267 回答