ios - 为键设置对象后 NSUserDefaults nil

标签 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!

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

为!字符串//返回“这是重要消息”

我的问题是为什么它没有返回字符串值而不是第一次返回 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/

相关文章:

ios - 启用 TableViewController 的刷新选项会抛出 NSUnknownKeyException

ios - 将 iPhone 用作 iBeacon

ios - 类 "View controller"没有初始化程序

ios - 使用 Firebase 和 Swift 3 结构化数据以比较值

c - 在 Windows 上删除名为 "NUL"的文件

sql-server - SQL Server - 为什么它允许我在不可为空的列中插入空格?

ios - 不同的 UITableViewCell 类型对齐

ios - TextInpout 自动更正在 ios 中显示相反 [react native]

arrays - 上下文类型 'Emoji' 不能与数组文字一起使用

android - Face API 属性 Emotion 给出 Null 对象错误