使用NSCoding对枚举进行编码

时间:2016-12-24 09:12:48

标签: swift nscoding nscoder

我正在我的库中实现NSCoding,但我需要序列化一个枚举变量,我无法将其传递给AnyObject?的函数。如何在Swift中完成?这是我的枚举:

enum ServerType {
  case PC
  case PE
}

此外,toRaw()不存在fromRaw()ServerType。我可以访问的唯一属性是hashValue,我没有可以访问的方法。

2 个答案:

答案 0 :(得分:3)

这类似于@Bennett的答案,但您可以将它与NSNumber一起使用,如下所示:

enum ServerType: UInt {
    case PC
    case PE
}

let someType: ServerType = .PE
NSNumber(value: someType.rawValue) // 1

答案 1 :(得分:0)

将您的代码更改为

enum ServerType : String {
  case PC
  case PE
}

您应该可以使用rawValue参数。