如何使用 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] [重复]

在 NSuserdefaults 中保存选定的检查表行

iPhone NSUserDefaults

通过加载 NSUserDefaults 检查多行

如何使用 NSUserDefaults 和 NSDateComponent 来存储?

c# 中如何取得当前时间后,把当前时间和数据库中的时间做判断,比如数据库中date的值为2011-01-11,当前时