检索之前未使用过的 NSUserDefaults (Swift)
Retrieve NSUserDefaults that haven't been used before (Swift)
我在打开我的应用程序时加载了一些 NSUserDefaults 值,在第一次成功会话后它运行良好,但问题是它第一次在新设备中打开。它试图找到我以前从未填充或声明过的值。我尝试使用以下 if 条件修复它,但它仍然无法正常工作:
if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{
但仍然报告我同样的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
是否因为在这一行中我只检查对象的密钥而不是密钥?有什么方法可以检查该值是否是之前创建的?
完整代码如下:
if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{
NSUserDefaults.standardUserDefaults().setObject("", forKey: "defaultSessionUserID")
NSUserDefaults.standardUserDefaults().setObject(false, forKey: "KML")
}
if NSUserDefaults.standardUserDefaults().objectForKey("KML")! as? Bool == false{
//Do something
}
else{
//Do something else
}}
谢谢
要检查键和值类型,请使用可选绑定
if let defaultSessionUserID = NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID") as? String {
// key and value exists
}
您可以注册默认值(例如 applicationDidFinishLaunching
)
let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["defaultSessionUserID" : "", "KML" : false]
defaults.registerDefaults(defaultValues)
那你就可以安心写了
let defaultSessionUserID = NSUserDefaults.standardUserDefaults().stringForKey("defaultSessionUserID")!
考虑 NSUserDefaults
有专用方法 stringForKey
和 boolForKey
我在打开我的应用程序时加载了一些 NSUserDefaults 值,在第一次成功会话后它运行良好,但问题是它第一次在新设备中打开。它试图找到我以前从未填充或声明过的值。我尝试使用以下 if 条件修复它,但它仍然无法正常工作:
if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{
但仍然报告我同样的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
是否因为在这一行中我只检查对象的密钥而不是密钥?有什么方法可以检查该值是否是之前创建的?
完整代码如下:
if NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID")! as? String == nil{
NSUserDefaults.standardUserDefaults().setObject("", forKey: "defaultSessionUserID")
NSUserDefaults.standardUserDefaults().setObject(false, forKey: "KML")
}
if NSUserDefaults.standardUserDefaults().objectForKey("KML")! as? Bool == false{
//Do something
}
else{
//Do something else
}}
谢谢
要检查键和值类型,请使用可选绑定
if let defaultSessionUserID = NSUserDefaults.standardUserDefaults().objectForKey("defaultSessionUserID") as? String {
// key and value exists
}
您可以注册默认值(例如 applicationDidFinishLaunching
)
let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["defaultSessionUserID" : "", "KML" : false]
defaults.registerDefaults(defaultValues)
那你就可以安心写了
let defaultSessionUserID = NSUserDefaults.standardUserDefaults().stringForKey("defaultSessionUserID")!
考虑 NSUserDefaults
有专用方法 stringForKey
和 boolForKey