我正在编写一些代码来保存用户首选项。
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)
}我在调用getSettings()之前调用了setSettings(),但在调用getSettings()时,getSettings()中的settingsExist似乎总是假的。为什么会这样呢?这是保存这些信息的最好方法吗?
发布于 2015-08-13 10:29:43
抱歉,我误解了NSUbiquitousKeyValueStore的函数boolForKey。
boolForKey不会检查该键是否存在,但会检查该键的值,该值应该是布尔值。
所以我重写为: enum CustomSettingsEnum: NSNumber { case Off case On }
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
}https://stackoverflow.com/questions/31977737
复制相似问题