首次打开应用程序时,在UserDefaults中保存日期

时间:2018-12-09 01:10:21

标签: swift date nsuserdefaults appdelegate

我试图在第一次打开应用程序时设置Date()。这将在UserDefaults中设置。

我使用register()将日期保存在UserDefault中。问题是..这个值似乎在每次启动时都保存了,这违背了UserDefaults.register的目的。

这是我的代码:

let initialOpen: NSDictionary = ["FirstOpen" : Date()]
UserDefaults.standard.register(defaults: initialOpen as! [String : AnyObject])

let firstOpenDate = UserDefaults.standard.value(forKey: "FirstOpen")
print("First Opened: \(firstOpenDate)")

我在didFinishLaunchingWithOptions之内打电话。

如何在UserDefaults中记录首次启动该应用程序的时间?

1 个答案:

答案 0 :(得分:2)

  1. 不需要register(defaults:)
  2. 请勿使用value(forKey:)UserDefaults读取数据。

您需要做的就是首先检查日期是否已设置,如果没有,请设置日期。

if let firstOpen = UserDefaults.standard.object(forKey: "FirstOpen") as? Date {
    print("The app was first opened on \(firstOpen)")
} else {
    // This is the first launch
    UserDefaults.standard.set(Date(), forKey: "FirstOpen")
}