比较Swift中的日期

时间:2014-11-23 14:35:13

标签: ios swift

我正在开发我的第一个应用程序。我正在使用Swift。用户每天只允许采取一次特定行动。我需要编写正确的代码来检查用户是否已经采取了今天的操作。不幸的是,我几乎不知道如何构建代码。特别是我不知道如何为那些第一次开始使用该应用的用户声明变量nil。

@IBAction func yesButtonPressed(sender: AnyObject) {

// check if the user have already clicked 'yes' button today
// if true then do some something
// else show the alert

}

非常感谢您的回答!

1 个答案:

答案 0 :(得分:0)

这并不是非常复杂,但如果你还没有,你需要学习一些技巧。我将尝试在代码中解释。

您可以使用标准用户默认值来保存一些值,以便即使用户关闭应用程序也会保留该值。

// To get current date and time
let currentDate = NSDate()

// To save it to user defaults - do this when the user presses the button
NSUserDefaults.standardUserDefaults().setObject(currentDate, forKey: "myDate")
NSUserDefaults.standardUserDefaults().synchronize()

// To retrieve the date from user defaults - and to check if the button was pressed
let myDate = NSUserDefaults.standardUserDefaults().objectForKey("myDate") as? NSDate

// myDate will be nil if it was not set yet (first use). Let's check it for nil
if let lastPushedDate = myDate {

    // get current date a time to compare with the saved value
    let dateNow = NSDate()
    let secondsInADay: NSTimeInterval = 3600 * 25

    // check how many seconds elapsed since last date and do something if the interval is long enough
    if dateNow.timeIntervalSinceDate(lastPushedDate) >= secondsInADay {
        println("We are fine, button can be pushed")
    }
}

因此,在您的函数yesButtonPressed中,您将需要执行以下操作:

  • 从用户默认值中检索日期。
  • 如果从未使用过,那将是零。
  • 如果使用它,请将其与当前时间进行比较,并确定经过的时间间隔是否足够长。
  • 按下按钮后,将当前日期保存为用户默认值
  • 作为下一步,为了获得更好的用户体验,如果时间尚未过去,您可能希望禁用该按钮,并且只有在按下该按钮时才启用该按钮。