首次打开 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 中保存日期的主要内容,如果未能解决你的问题,请参考以下文章
在 UserDefaults 中将图像存储为 base64 的内存性能 [关闭]
appium+python自动化47-首次打开app权限弹窗问题