Encode и Decode enum в Swift 1.2

У меня есть enum в моем классе Swift и объявленной переменной. Мне нужно кодировать и декодировать его с помощью NSCoder, Есть много вопросов об этом высказывании, что я должен использовать rawValue, Enum объявляется следующим образом:

enum ConnectionType {
    case Digital, PWM
}

Но в Swift 1.2 такого инициализатора нет. Как это сделать в Swift 1.2 и Xcode 6.3?

1 ответ

Решение

Вы должны определить "сырой тип" для перечисления, например

enum ConnectionType : Int {
    case Digital, PWM
}

Затем вы можете закодировать его

aCoder.encodeInteger(type.rawValue, forKey: "type")

и расшифровать с

type = ConnectionType(rawValue: aDecoder.decodeIntegerForKey("type")) ?? .Digital

где нуль-коалесцирующий оператор ?? используется для предоставления значения по умолчанию, если декодированное целое число недопустимо для перечисления.

Другие вопросы по тегам