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