0

我正在编写一些代码来保存用户偏好。

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(),似乎 总是假的settingsExistgetSettings()为什么会这样?这是保存此类信息的最佳方式吗?

4

1 回答 1

0

对不起,我误解boolForKeyNSUbiquitousKeyValueStore.

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
}
于 2015-08-13T02:29:43.260 回答