在第一次打开应用程序时在 UserDefaults 中保存日期

Joe*_*Joe 4 date nsuserdefaults appdelegate swift

我正在尝试设置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)")
Run Code Online (Sandbox Code Playgroud)

我在didFinishLaunchingWithOptions.

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

rma*_*ddy 6

  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")
}
Run Code Online (Sandbox Code Playgroud)