首次打开 App 时在 UserDefaults 中保存日期

Posted

技术标签:

【中文标题】首次打开 App 时在 UserDefaults 中保存日期【英文标题】:Saving Date in UserDefaults of the first time the App was opened 【发布时间】:2018-12-09 01:10:21 【问题描述】:

我正在尝试在第一次打开应用程序时设置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 中记录 App 首次启动的时间?

【问题讨论】:

如果您想了解register(defaults:) 的作用,请参阅***.com/questions/53683730/… 【参考方案1】:
    不需要register(defaults:)。 不要使用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")

【讨论】:

感谢注册(默认值:)提示。这行得通。问题:“2. 不要使用 value(forKey:) 从 UserDefaults 读取数据。”好的。我应该使用什么来从 UserDefaults 中读取日期? 查看UserDefaults 的参考文档。除了object(forKey:) 显示我的答案之外,还有其他几个返回特定数据类型。

以上是关于首次打开 App 时在 UserDefaults 中保存日期的主要内容,如果未能解决你的问题,请参考以下文章

首次打开 App 时显示 UIScrollView

在 UserDefaults 中将图像存储为 base64 的内存性能 [关闭]

appium+python自动化47-首次打开app权限弹窗问题

从 UIDocumentBrowserViewController 中的 UserDefaults 以编程方式打开文档

设备锁定时在 Today 扩展中加载文件

如何在 Xcode 中终止并重新打开应用程序后检查 UserDefaults (swift)