我正在编写一些代码来保存用户首选项。
enum CustomSettingsEnum: NSNumber {
case Off
case On
}
let someKey = "SOME_KEY"
func getSettings() -> CustomSettingsEnum {
var cseBool = Bool?
var cse: CustomSettingsEnum!
let settingsExists = NSUbiquitousKeyValueStore.defaultStore().boolForKey(self.someKey)
if settingsExist {
// Get the NSNumber and convert that to Bool
} else {
cse = CustomSettingsEnum.On
}
return cse
}
func setSettings(cse: CustomSettingsEnum) {
NSUbiquitousKeyValueStore.defaultStore().setObject(cse, forKey: self.someKey)
}
我先致电
setSettings()
,再致电getSettings()
,但是在调用
getSettings()
时,似乎settingsExist
中的getSettings()
始终为假。为什么会这样呢?这是保存此类信息的最佳方法吗? 最佳答案
抱歉,我误解了boolForKey
的功能NSUbiquitousKeyValueStore
。boolForKey
不会检查该密钥是否存在,
但正在检查该键的值,该键应该是Bool。
所以我这样重写它:
枚举CustomSettingsEnum:NSNumber {
案例关闭
案例开
}
let someKey = "SOME_KEY"
func getSettings() -> CustomSettingsEnum {
var cseBool = Bool?
var cse: CustomSettingsEnum!
let settingsExists = NSUbiquitousKeyValueStore.defaultStore().objectForKey(self.someKey)
if settingsExist != nil {
// Get the NSNumber and convert that to Bool
} else {
cse = CustomSettingsEnum.On
}
return cse
}