Swift integerForKey:如果指定的key不存在,这个方法返回0

Eri*_*ner 3 nsuserdefaults ios swift

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

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

Chr*_*örz 5

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

if let yourInteger = NSUserDefaults.standardUserDefaults().objectForKey("yourKey"){
    //Key exists
}
Run Code Online (Sandbox Code Playgroud)

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

extension NSUserDefaults {
    func hasKey(key: String) -> Bool {
        return objectForKey(key) != nil
    }
}
Run Code Online (Sandbox Code Playgroud)