如何快速导入枚举

时间:2018-10-16 23:37:06

标签: c swift

将我的enum导入swift时,它成为一个结构并丢失了案例。如何才能快速将其导入为枚举?

c代码:

enum Foo {
    A = 1,
    B = 2
};

Swift生成:

public struct Foo : Equatable, RawRepresentable {

    public init(_ rawValue: UInt32)

    public init(rawValue: UInt32)

    public var rawValue: UInt32
}

预期的Swift:

enum Foo: UInt32 {
    case A = 1,
    case B = 2
}

1 个答案:

答案 0 :(得分:1)

当Swift导入常用的C枚举时,案例将作为全局常量导入。

似乎如下:

let A = Foo(1)
let B = Foo(2)

您可以像这样使用它们:

var someFoo: Foo = A

我不确定为什么这些常量不包含在“生成的接口”中。


如果您可以触摸.h文件并可以导入Objective-C类的某些标题,则可以使用宏NS_ENUM

typedef NS_ENUM(NSInteger, Bar) {
    A = 1,
    B = 2
};

生成的标题如下:

public enum Bar : Int {


    case A

    case B
}

(生成的接口不显示rawValue,但与原始代码一样,它们分别为1和2。)

但是我不知道这是否可以作为您的选择。