在我的应用程序中,我使用以下代码保存密钥:
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中做这样的事情?
答案 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")
}