Как импортировать cum в swift - PullRequest
0 голосов
/ 17 октября 2018

Когда я импортирую свой список в swift, он становится структурой и теряет регистры.Как я могу получить это, чтобы импортировать как перечисление в 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 голосов
/ 17 октября 2018

Когда 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соответственно как в оригинальном коде.)

Но мне интересно, может ли это быть вашим вариантом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...