我在我的Swift类中有一个枚举
和一个变量声明。我需要使用NSCoder
对其进行编码和解码。有很多关于此的问题,说我应该使用rawValue
。 Enum
声明如下:
enum ConnectionType {
case Digital, PWM
}
但在Swift 1.2中没有这样的初始化器。在Swift 1.2和Xcode 6.3中如何实现呢?
您必须为枚举定义一个“原始类型”,例如:
enum ConnectionType : Int {
case Digital, PWM
}
aCoder.encodeInteger(type.rawValue, forKey: "type")
并使用解码
type = ConnectionType(rawValue: aDecoder.decodeIntegerForKey("type")) ?? .Digital
在枚举类型中,如果解码的整数无效,则使用空合并运算符??
提供默认值。