【问题标题】:Swift integerForKey: If the specified key does not exist, this method returns 0 [duplicate]Swift integerForKey:如果指定的键不存在,此方法返回0 [重复]
【发布时间】:2015-04-19 20:13:24
【问题描述】:

我想在 NSUserDefaults 中存储一个可能为 0 的整数。如何区分存储为 0 的整数和 NSUserDefaults 中不存在的键?

根据the NSUserDefaults docsintegerForKey如果键在NSUserDefaults中不存在则返回0。所以,我的问题是:如何区分不存在的密钥和我存储为 0 的密钥?

【问题讨论】:

  • 一种方法是假设值存在。如果不存在,则默认值为 0,但它与存在且为 0 时有何不同?如果您需要一个不同于 0 的默认值,请使用 NSUserDefaults.registerDefaults,这将为不存在的键提供默认值,但不会覆盖确实存在的键的值。
  • 注意还有第三个选项:key存在,但是它的值不是整数。

标签: ios swift nsuserdefaults


【解决方案1】:

您可以使用objectForKey 方法进行检查,因为该方法不会自动返回 0,而是在键不存在时返回 nil:

if let yourInteger = NSUserDefaults.standardUserDefaults().objectForKey("yourKey"){
    //Key exists
}

你可以为你的 NSUserDefaults 创建一个扩展来检查:

extension NSUserDefaults {
    func hasKey(key: String) -> Bool {
        return objectForKey(key) != nil
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-24
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2020-02-05
    • 2013-05-23
    相关资源
    最近更新 更多