为键设置对象后 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

先生,您欠我一瓶啤酒。