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

标签 ios string swift date datepicker

我正在尝试制作一个名为“今天是你的生日吗”的有趣应用 你基本上插入你的出生日期,然后你插入当前日期,它检查两个日期并响应 “今天不是你的生日……” 或者 “今天是你的生日!”

足够简单的应用程序吧?

不过我遇到了问题..此时我只是做了一个名为 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/

相关文章:

ios - 操作无法完成(IDEStackFrame 错误 0。)

ios - 与 UITapGestureRecognizer 一起使用时,collectionView 的 didSelectItemAt 不会被调用

java - 如何获取字符串中所有匹配项的位置?

java - 如何使用正则表达式拆分 MCQ(多项选择题)字符串

java - String.equals() 是如何工作的

iphone - 我们什么时候可以发布使用适用于 iOS 的 Google SDK 的应用程序?

ios - 核心数据在更新应用程序时创建额外的空存储

iOS Swift 将 GPS 坐标存储到数组中

ios - 如何传递符合协议(protocol)的类类型

ios - 解析错误处理 swift 3