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