在 Swift 1.2 中编码和解码枚举
Encode and Decode enum in Swift 1.2
我的 Swift class 中有一个 enum
和一个声明的变量。我需要使用 NSCoder
对其进行编码和解码。这句话有很多问题我应该用rawValue
。 Enum
声明方式如下:
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 合并运算符 ??
用于提供默认值
如果解码后的整数对枚举无效。
我的 Swift class 中有一个 enum
和一个声明的变量。我需要使用 NSCoder
对其进行编码和解码。这句话有很多问题我应该用rawValue
。 Enum
声明方式如下:
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 合并运算符 ??
用于提供默认值
如果解码后的整数对枚举无效。