我遇到了一个问题,我无法从谷歌或其他问题中找到帮助来解决或给我与 NSUserDefaults
相关的解释
let defaults = NSUserDefaults.standardUserDefaults()
let s = defaults.objectForKey("troll")
if s == nil {
defaults.setObject("This is important message", forKey: "troll")
defaults.synchronize()
}
print(s as! String) // It returns nil
事实证明,如果我在设置对象后立即尝试访问它,它会返回 nil!
但是,如果在我的设备上再次运行我的项目,那么:
为!字符串//返回“这是重要消息”
我的问题是为什么它没有返回字符串值而不是第一次返回 nil,但第二次项目运行时返回该字符串值。
我需要它在第一时间返回字符串值。那可能吗?有人可以指出我做错了什么吗?
提前致谢!
最佳答案
你会踢自己的......
if s == nil {
所以你刚才说 s
是 nil,我明白了......
print(s as! String) // It returns nil
好吧,你期望它是什么,你刚刚说它是零! :-)
我想你是想这样做:
let s = defaults.objectForKey("troll")
if s == nil {
s = "This is important message"
defaults.setObject(s, forKey: "troll")
defaults.synchronize()
}
print(s as! String) // no longer returns nil
先生,您欠我一杯啤酒。
关于ios - 为键设置对象后 NSUserDefaults nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625537/