如何将Enum Case值保存到UserDefaults以供进一步使用

时间:2017-08-01 15:30:48

标签: swift enums

如何将枚举案例的值保存到UserDefaults?我试过,没有运气。我检查了多个网站,包括这个,但没有运气,它们都在Swift 2或Objective-c中,我根本无法翻译。

2 个答案:

答案 0 :(得分:10)

使用符合属性列表的原始值创建枚举,例如Int

enum ExampleEnum : Int {
    case default1
    case default2
    case default3   
}

隐含地第一种情况是0,第二种情况是1,依此类推。

现在您可以将(原始)值保存在UserDefaults

UserDefaults.standard.set(currentDefaultType.rawValue, forKey:"Foo")

并阅读它

currentDefaultType = ExampleEnum(rawValue: UserDefaults.standard.integer(forKey:"Foo"))!

答案 1 :(得分:1)

<强> -UPDATE -

想出来我自己必须在我的枚举案例中添加一个整数扩展名,以便enum有一个值来保存

所以我在包含switch方法

的文件顶部开始使用两个全局变量
var switchCurrentType = .default1
var currentDefaultType = UserDefaults().integer(forkey: "CurrentDefaultType")

然后我在我切换案例的文件中声明了枚举案例(例如,如果你想按下一个按钮,或者在你把案件放在这里的didMoveToView方法中)

enum ExampleEnum : Int {
    case default1
    case default2
}

然后我在切换案例时使用它

switchCurrentType = .default1 //or whatever you are trying to switch to

我使用它将其保存到UserDefaults

UserDefaults.standard.set(switchCurrentType.rawValue, forKey: "CurrentDefaultType")

这里是读取保存的数据以供进一步使用

//in the didMoveToView method put this code in
switchCurrentType = ExampleEnum(rawValue: UserDefaults.standard.integer(forKey: "CurrentDefaultType"))! //make sure exclamation mark at the end is there or it won't read properly