将 'ClassName' 重新定义为生成的 header 中的不同种类的符号

Redefinition of 'ClassName' as different kind of symbol in generated header

我创建了一个 Swift 枚举作为 Int(因此它可以与 Objective-c 一起使用)。

当我构建项目时,一切都很好。但是,一旦我尝试在 .h 文件中导入 class(使用前向声明 @ClassName),生成的 header 文件就会出现 Redefinition of 'ClassName' as a different kind of symbol

错误

查看生成的 .h 文件,我可以看到它生成了如下新类型:

typedef SWIFT_ENUM(NSInteger, ClassName, closed) {
  type1 = 1,
  type2 = 2,
};

它在 ClassName 下划线表示它是 re-declared。但是,它在 header 文件中的其他地方不存在(进行搜索并且只出现一次)并且它只在 swift 文件中声明一次。

对正在发生的事情有什么建议吗?

枚举在 Objective-C 中不是 类,因此您需要在 .h 文件中使用 typedef 而不是前向声明:

typedef NS_ENUM(NSInteger, ClassName);

然后在.m文件中,你需要导入Module-Swift.h文件。