在 Swift 1.2 中编码和解码枚举

Encode and Decode enum in Swift 1.2

我的 Swift class 中有一个 enum 和一个声明的变量。我需要使用 NSCoder 对其进行编码和解码。这句话有很多问题我应该用rawValueEnum 声明方式如下:

enum ConnectionType {
    case Digital, PWM
}

但是在Swift 1.2 中没有这样的初始化程序。在 Swift 1.2 和 Xcode 6.3 中如何做到这一点?

您必须为枚举定义一个 "raw type",例如

enum ConnectionType : Int {
    case Digital, PWM
}

然后你可以用

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

并用

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

其中 nil 合并运算符 ?? 用于提供默认值 如果解码后的整数对枚举无效。