我正面临一个问题,我无法通过谷歌或其他问题找到帮助或给我解释与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,但第二个项目运行时返回该字符串值。
我需要它在第一次返回字符串值。那可能吗?有人能指出我做错了什么吗?
提前致谢!
答案 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()
先生,你欠我一杯啤酒。