Ключи 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
}
Другие вопросы по тегам