导入导入自动生成的Swift头的Obj-C文件

时间:2017-08-07 16:37:15

标签: ios objective-c swift enums objective-c-swift-bridge

这是Import a file in bridging-header which imports Swift header的部分副本,但我遇到与Rich相同的问题

  

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

我正在将一个Obj-C iPad应用程序移植到iPhone上。但是我是一个Swift开发人员,他真的不会重写现有的功能;取而代之的是。

我为iPhone版创建了一个新目标。在我的桥接标题中,我导入了一个使用#import "ProjectName-Swift.h"的obj-c类。由于此文件是自动生成的,因此在构建此新目标时不存在。 linked答案是添加@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 {

1 个答案:

答案 0 :(得分:1)

Swift中的

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

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

typedef enum SmileyFace: NSInteger SmileyFace;

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