在Swift 1.2中编码和解码枚举

时间:2015-05-24 08:15:06

标签: ios swift nscoder

我的Swift类中有一个d = { order: str(i) } 并且声明了一个变量。我需要使用enum对其进行编码和解码。关于这个说法有很多问题我应该使用NSCoderrawValue以下列方式声明:

Enum

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

1 个答案:

答案 0 :(得分:6)

您必须为枚举定义“原始类型”,例如

enum ConnectionType : Int {
    case Digital, PWM
}

然后你可以用

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

并用

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

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