2

这是Import a file in bridging-header 的部分副本,该文件导入 Swift 标头,但我遇到与Rich相同的问题

但是在 Swift 中声明的枚举呢?:(

我正在将 Obj-C iPad 应用程序移植到 iPhone。但是我是一个 Swift 开发者,我真的不想重写现有的功能;而是替换 UI。

我为 iPhone 版本创建了一个新目标。在我的桥接头中,我导入了一个使用#import "ProjectName-Swift.h". 由于此文件是自动生成的,因此在我构建此新目标时它不存在。链接的答案是添加一个@class,但遗留代码使用一个枚举,它现在给出错误“预期类型”。

// File that I am currently importing
-(void)setSmileyType:(SmileyFace)type andDelegate:(id<NumberRatingDelegate>)delegate;
// This line now throws an error "Expected a type"

//File that was previously auto imported
@objc public enum SmileyFace: Int {
4

1 回答 1

3

@objc enumin Swift 在 ProjectName-Swift.h 中作为 C 枚举公开。(使用宏SWIFT_ENUM。)

您可以将这样的内容放入使用 Swift 枚举的 Objective-C 头文件中:

typedef enum SmileyFace: NSInteger SmileyFace;

(与使用宏生成的代码的第一部分相同SWIFT_ENUM。)

于 2017-08-07T16:58:05.650 回答