Swift integerForKey:如果指定的key不存在,则此方法returns 0

Swift integerForKey: If the specified key does not exist, this method returns 0

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

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

您可以使用 objectForKey 方法进行检查,因为此方法不会自动 returns 0 而是 returns nil,如果密钥不存在:

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

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

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