斯威夫特3:了解一下,如果日期已经改变 - 怎么样?

时间:2017-04-11 06:25:48

标签: ios iphone date swift3

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

这是我的布尔:

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它说:“永远不会执行。”#39;。你能救我吗?

感谢您一看!

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

@Whazzup - 问题是你在尝试设置日期之前执行return - 这就是为什么它永远不会被执行。您只需要在日期相同的情况下返回,并且您不需要做任何其他事情。

答案 2 :(得分:0)

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

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