检查NSUserDefaults密钥是否存在

时间:2015-07-23 22:05:07

标签: swift nsuserdefaults

在我的应用程序中,我使用以下代码保存密钥:

func saveKey(){
        var xmineSpillere = mineSpillere
        var defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject(xmineSpillere, forKey: "YourKey")
    }

但是如何检查密钥是否存在?我希望代码像这样:

if key("YourKey") exists {
    println("key exists")
}
else {
    println("does not exist")
}

我如何在Swift中做这样的事情?

4 个答案:

答案 0 :(得分:20)

首先,每次将任何内容保存到NSUserDefaults时,您需要调用synchronize()方法将对持久域的任何修改写入磁盘,并将所有未修改的持久域更新到磁盘上的内容。

func saveKey(){
    var xmineSpillere = mineSpillere
    var defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(xmineSpillere, forKey: "YourKey")
    defaults.synchronize()
}
  

synchronize方法会定期自动调用,只有在您无法等待自动同步时(例如,如果您的应用程序即将退出)或者您要更新用户默认值时,才使用此方法即使您没有进行任何更改,也可以使用磁盘上的内容。

然后您可以通过以下方式获得任何值:

if let key = NSUserDefaults.standardUserDefaults().objectForKey("YourKey"){
   // exist
}
else {
   // not exist
}

我希望这对你有所帮助。

答案 1 :(得分:7)

发现自己,代码:

if (NSUserDefaults.standardUserDefaults().objectForKey("YourKey") != nil) {
            println("key exist")
        }

答案 2 :(得分:2)

Swift 3 +

if let key = UserDefaults.standard.object(forKey: "Key"){
  // exist
} else {
  // not exist
}

答案 3 :(得分:2)

将此扩展程序添加到UserDefaults会有所帮助:

extension UserDefaults {
    func contains(key: String) -> Bool {
        return UserDefaults.standard.object(forKey: key) != nil
    }
}

您可以检查您的密钥是否存在:

if UserDefaults.contains(key: "YourKey") {
    print("Key exist")
} else {
   print("Does not exist")
}