【问题标题】:found nil while unwrapping in UserDefaults在 UserDefaults 中展开时发现 nil
【发布时间】:2020-06-21 05:27:24
【问题描述】:

我想将日期保存到 userDefaults。

按钮(动作:{

                var date = Date()
                if date != nil{
                    date = UserDefaults.standard.object(forKey: "myDate") as! Date
                }
                print(date)
            }) {
            ........(design stuff)
            }

也经过测试:让 date = UserDefaults.standard.object(forKey: "myDate") as!日期

但我总是在展开 Optional 值时意外发现 nil。

【问题讨论】:

  • 首先,您强制解开来自 UserDefaults 的响应,使用“if let”、“guard let”或 nil-coalescing。这使您可以处理 nil 情况。其次,您将日期存储在 UserDefaults 中的什么位置,您应该在问题中显示该代码。

标签: swift xcode action


【解决方案1】:

在使用! 强制转换之前,检查对象是否在UserDefaults 中可用。始终使用 if letguard let 安全地转换选项。

保存日期:

UserDefaults.standard.set(myDate, forKey: "myDate")

要检索日期:

if let object = UserDefaults.standard.object(forKey: "myDate") as? Date {
    date = object
} else {
    print("No object for key myDate in UserDefaults")
}

【讨论】:

  • 好的。我在 UserDefaults 中得到键 myDate 没有对象。我能做些什么?我想保存日期。
  • 在您尝试获取之前将日期保存在 UserDefaults 中。 UserDefaults.standard.set(myDate, forKey: "myDate")
  • 问题清楚地表明“我想保存日期到 userDefaults”,这个答案是从 UserDefaults 中读取的。为什么要发布这样一个不相关的答案,为什么它甚至被接受?
  • 添加了在帖子中保存日期的部分。
猜你喜欢
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多