我正在尝试制作一个名为“今天是你的生日吗”的有趣应用 你基本上插入你的出生日期,然后你插入当前日期,它检查两个日期并响应 “今天不是你的生日……” 或者 “今天是你的生日!”
足够简单的应用程序吧?
不过我遇到了问题..此时我只是做了一个名为 myBirthday(1 月 15 日)的常量
然后用户使用 UIDatePicker,并选择当前日期。
程序使用“myBirthday”常量检查来自 DatePicker 的变量“dateChosen”(我相信我已经正确地将日期和月份转换为字符串)
出于某种原因,即使我选择了 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.
}
最佳答案
checkButtonClicked
方法中有一个实例变量 dateChosen
和一个同名的局部变量。局部变量隐藏了实例变量。您的代码将一个值保存到局部变量中,然后在函数返回时丢弃该值。
去掉 checkButtonClicked
中的局部变量 dateChosen
。这样函数将更改实例变量。
您应该学习使用调试器。您会通过单步执行代码发现此问题。
关于ios - 如何将 Swift UIDatePicker 转换为字符串,然后检查另一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020832/