对于我的应用,我需要查看相对于您上次打开应用时的日期是否发生了变化。出于这个原因,我说你可以在下面看到。问题是:它不会因任何原因而起作用。我的应用会计算您使用它的连续几天,因此如果天数发生变化,它会将一个天数添加到计数器中。
这是我的布尔:
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;。你能救我吗?
感谢您一看!
答案 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