如何使用 NSUserDefaults 检查当前时间和上次发布时间?
Posted
技术标签:
【中文标题】如何使用 NSUserDefaults 检查当前时间和上次发布时间?【英文标题】:How to use NSUserDefaults to check between current time and last posting time? 【发布时间】:2019-02-23 09:16:24 【问题描述】:我的想法是,当每次点击按钮“A”时,它会自动设置 NSDate 值。当当前时间大于现有的 NSDate 值时,它会打印“yes”。这是我的代码,但我不知道出了什么问题。 导入 UIKit
类视图控制器:UIViewController
var currentDateTime = NSDate()
override func viewDidLoad()
super.viewDidLoad()
observeTime()
@IBAction func show(_ sender: Any)
print(UserDefaults.standard.dictionaryRepresentation())
let userDefaults = UserDefaults.standard
func observeTime()
let posttime = userDefaults.object(forKey: "LastPostingTime") as? NSDate
if ((posttime?.isGreaterThanDate(dateToCompare: currentDateTime))!)
print("yes")
@IBAction func hihi(_ sender: Any)
observeTime()
userDefaults.set(NSDate(), forKey: "LastPostingTime")
extension NSDate
func isGreaterThanDate(dateToCompare: NSDate) -> Bool
//Declare Variables
var isGreater = false
//Compare Values
if self.compare(dateToCompare as Date) == ComparisonResult.orderedDescending
isGreater = true
//Return Result
return isGreater
【问题讨论】:
不相关,但NSDate
扩展非常麻烦。使用Date
并比较date1 > date2
。保存日期并立即读回来是没有意义的。
【参考方案1】:
在函数hihi
中,您首先将当前日期存储到 NSUserDefaults 中,然后再读取它。因此,您将取回刚刚存储的内容:当前时间。
您可能想先阅读它,将其与 currentDateTime 进行比较,然后将其存储到用户默认值中。
【讨论】:
你能提供一些示例代码吗?谢谢你,因为我是 NSUserdefaults 的新手 只要把hihi
中的第一条语句放在最后。
我已经编辑了上面的代码,但我仍然只能在第二次点击时比较它..(不知道为什么第一次点击失败)
调试呢? :-) 第一次通话的 posttime 值是多少?
我已经尝试在viewDidLoad处打印日志中的所有值,并且该值是正确的。但我无法将值与第一次点击按钮进行比较以上是关于如何使用 NSUserDefaults 检查当前时间和上次发布时间?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Xcode 9.3 在 iOS 开发设备中检查 [NSUserDefaults standardUserDefaults] [重复]