如何将Swift UIDatePicker转换为字符串,然后检查另一个日期

时间:2015-05-04 00:04:55

标签: ios string swift date datepicker

我正在尝试创建一个名为“#34;它是你的生日" 你基本上插入你的出生日期,然后插入当前日期,它检查两个日期并作出回应 "今天不是你的生日......" 要么 "今天是你的生日!"

简单的应用程序对吧?

我虽然遇到了问题。此时我只是做了一个名为myBirthday(1月15日)的常数

然后用户使用UIDatePicker,并选择当前日期。

程序检查变量" dateChosen"使用" myBirthday"从DatePicker(我相信我已将日期和月份正确转换为字符串)恒定

出于某种原因,即使我选择1月15日(15-01),并用" myBirthday" (15-01),它不承认这些是相同的日期!!

任何人都可以帮助我! 这是我的代码

谢谢:) (顺便说一句,这都是在Swift编程的)

import UIKit

class ViewController: UIViewController {


var responseText = "Response Text"
let myBirthday = "15-01"
var dateChosen = ""


@IBOutlet var checkButton: UIButton!
@IBOutlet var displayAnswer: UILabel!

@IBOutlet weak var myDatePicker: UIDatePicker!
@IBOutlet weak var selectedDate: UILabel!

@IBAction func datePickerAction(sender: AnyObject) {
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd-MM"

    var strDate = dateFormatter.stringFromDate(myDatePicker.date)
    var dateChosen = strDate
    println(strDate)
}



@IBAction func checkButtonClicked(sender:UIButton) {
    if dateChosen == myBirthday {
        displayAnswer.hidden = false
        responseText = "Today is your birthday!"
        self.displayAnswer.text = responseText
    } else {
        displayAnswer.hidden = false
        responseText = "Today is not your birthday..."
        self.displayAnswer.text = responseText
    }
}






override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

1 个答案:

答案 0 :(得分:0)

您的dateChosen方法中有一个实例变量checkButtonClicked和一个同名的局部变量。局部变量隐藏实例变量。您的代码将值保存到局部变量中,然后在函数返回时丢弃该值。

摆脱dateChosen内的局部变量checkButtonClicked。这样,该函数将改变实例变量。

您应该学会使用调试器。您可以通过单步执行代码来发现此问题。