为键设置对象后 NSUserDefaults nil
NSUserDefaults nil after setting an object for key
我遇到一个问题,我无法从 google 或其他问题中找到帮助,解决或给我与 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
事实证明,如果我在设置对象后立即尝试访问它,它 return 没有!
但是,如果 运行 我的项目再次出现在我的设备上,那么:
s as! String // returns "This is important message"
我的问题是为什么第一次 return 不是 returning 字符串值而不是 returning nil,而是第二个项目 运行 时间 return 那个字符串价值。
我第一次需要它 return 字符串值。那可能吗?有人可以指出我做错了什么吗?
提前致谢!
你会踢自己的...
if s == nil {
所以你刚才说 s
是零,我明白了...
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
先生,您欠我一瓶啤酒。
我遇到一个问题,我无法从 google 或其他问题中找到帮助,解决或给我与 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
事实证明,如果我在设置对象后立即尝试访问它,它 return 没有!
但是,如果 运行 我的项目再次出现在我的设备上,那么:
s as! String // returns "This is important message"
我的问题是为什么第一次 return 不是 returning 字符串值而不是 returning nil,而是第二个项目 运行 时间 return 那个字符串价值。
我第一次需要它 return 字符串值。那可能吗?有人可以指出我做错了什么吗?
提前致谢!
你会踢自己的...
if s == nil {
所以你刚才说 s
是零,我明白了...
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
先生,您欠我一瓶啤酒。