检查UserDefault是否存在 – Swift
我试图检查用户是否存在默认值,如下所示:
func userAlreadyExist() -> Bool { var userDefaults : NSUserDefaults = NSUserDefaults.standardUserDefaults() if userDefaults.objectForKey(kUSERID) { return true } return false }
但是,即使对象不存在,也不pipe它会一直返回true吗? 这是检查存在的正确方法吗?
Astun有一个很好的答案。 请参阅下面的Swift 3版本。
func isKeyPresentInUserDefaults(key: String) -> Bool { return UserDefaults.standard.object(forKey: key) != nil }
我复制/粘贴你的代码,但Xcode 6.1.1是我的方式抛出一些错误,它看起来像这样,它的作品就像一个魅力。 谢谢!
func userAlreadyExist(kUsernameKey: String) -> Bool { return NSUserDefaults.standardUserDefaults().objectForKey(kUsernameKey) != nil }
是的,这是正确的方法来检查optional
objectForKey
或任何值objectForKey
方法返回AnyObject?
这是Implicit optional
。
所以如果userDefaults.objectForKey(kUSERID)
有任何值,它的计算结果为true
。 如果userDefaults.objectForKey(kUSERID)
值nil
,则其值为false
。
从迅速的编程指南
如果语句和强制解包您可以使用if语句来确定一个选项是否包含一个值。 如果一个可选项有一个值,则它的计算结果为true; 如果它没有任何价值,那么它的评价是错误的。
现在,在模拟器中有一个错误,而不是在userDefaults
设置键后,无论你删除你的应用程序,它们总是保持设置。你需要重置模拟器。
重置您的模拟器检查此方法之前设置userDefaults
中的键或从userDefaults
删除关键userDefaults.removeObjectForKey(kUSERID)
,它将返回iOS8 beta4
设备它在iOS8 beta4
解决。
简单的代码来检查是否存储在UserDefault中的值。
let userdefaults = UserDefaults.standard if let savedValue = userdefaults.string(forKey: "key"){ print("Here you will get saved value") } else { print("No value in Userdefault,Either you can save value here or perform other operation") userdefaults.set("Here you can save value", forKey: "key") }
为迅速3.2
func userAlreadyExist(kUsernameKey: String) -> Bool { return UserDefaults.standard.object(forKey: kUsernameKey) != nil }