Ключи NSUbiquitousKeyValueStore не могут быть установлены
Я пишу немного кода, чтобы сохранить пользовательские настройки.
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()
всегда ложно. С чего бы это? И это лучший способ сохранить такую информацию?
1 ответ
Извините, я неправильно понял функцию boolForKey
за NSUbiquitousKeyValueStore
,
boolForKey
не проверяет, существует ли этот ключ, но проверяет значение этого ключа, которое должно быть Bool.
Поэтому я переписал это так: 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
}