如何在Swift中的NSDictionary中存储和读取枚举值。
我定义了几种类型
enum ActionType {
case Person
case Place
case Activity
}
将枚举写入词典
myDictionary.addObject(["type":ActionType.Place])
“AnyObject没有名为key的成员”
读取
var type:ActionType = myDictionary.objectForKey("type") as ActionType
“类型'ActionType'不符合协议'AnyObject'”
我还尝试将ActionType包装为NSNumber / Int,但这并不常用。关于如何在NSDictionaries中正确存储和读取枚举值的任何建议?
答案 0 :(得分:8)
它的投诉是因为您无法将值类型保存到NSDictionary(枚举是值类型)。 你必须将它包装到NSNumber但记得在这个枚举上调用toRaw,试试这个:
enum ActionType : Int {
case Person
case Place
case Activity
}
var myDictionary = NSDictionary(object:NSNumber(integer: ActionType.Place.toRaw()), forKey:"type")
//扩展
这是如何逐步访问它:
let typeAsNumber = myDictionary["type"] as? NSNumber
let tmpInt = typeAsNumber?.integerValue
let typeValue = ActionType.fromRaw(tmpInt!)
println(typeValue!.toRaw())