设置密钥对象后,NSUserDefaults为零

时间:2016-09-21 19:59:37

标签: ios swift null nsuserdefaults

我正面临一个问题,我无法通过谷歌或其他问题找到帮助或给我解释与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!

但是,如果再次在我的设备上运行我的项目,那么:

s as! String // returns "This is important message"

我的问题是为什么它没有返回字符串值而不是第一次返回nil,但第二个项目运行时返回该字符串值。

我需要它在第一次返回字符串值。那可能吗?有人能指出我做错了什么吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

你要踢自己......

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

那么,你期待它是什么,你刚才说它是零! : - )

我认为你打算这样做:

.indexOf()
先生,你欠我一杯啤酒。