【问题标题】:Swift 3: Find out, if the date has changed - how?Swift 3:找出日期是否已更改 - 如何?
【发布时间】:2017-04-11 06:25:48
【问题描述】:

对于我的应用,我需要查明相对于您上次打开应用的日期是否发生了变化。出于这个原因,我做了你可以在下面看到的。问题是:它出于任何原因都不起作用。我的应用会连续计算您使用它的天数,因此如果天数发生变化,它会在天数计数器中加一。

这是我的布尔值:

var dateChanged: Bool
{
    let dateNow = Date()
    var oldDate = defaults.object(forKey: "oldDate2") as? Date

    if dateNow != oldDate
    {
        return true
    }
    else
    {
        return false
    }

    oldDate = newDate
    defaults.set(oldDate, forKey: "oldDate")
    defaults.synchronize()

}

我该如何改进该布尔值?在oldDate = newDate 它说:“永远不会被处决。”。你能帮帮我吗?

感谢您的观看!

【问题讨论】:

  • 您正在检索“oldDate2”,但设置了“oldDate”。也无需致电synchronize
  • 你没有收到关于永远不会执行的代码的警告吗?

标签: ios iphone date swift3


【解决方案1】:

您需要使用Calendar 方法isDateInToday 来检查日期是今天的日期。此外,您需要在从函数返回值之前放置代码。

if !Calendar.current.isDateInToday(oldDate) {
    defaults.set(Date(), forKey: "oldDate")
    return true
}
return false

【讨论】:

    【解决方案2】:

    要知道日期是否已更改,请使用UIApplicationSignificantTimeChangeNotification

    参考:https://developer.apple.com/documentation/uikit/uiapplication/1623059-significanttimechangenotificatio

    【讨论】:

      【解决方案3】:

      @Whazzup - 问题是您在尝试设置日期之前执行了return - 这就是它永远不会被执行的原因。只需要日期相等的情况下return,其他什么都不用做。

      【讨论】:

        猜你喜欢
        • 2017-05-25
        • 1970-01-01
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2018-01-19
        • 1970-01-01
        • 2014-04-13
        相关资源
        最近更新 更多