If statement 使用日期选择器(swift3)设置报警

If statement 使用日期选择器(swift3)设置报警,if-statement,time,swift3,datepicker,alarm,If Statement,Time,Swift3,Datepicker,Alarm,我下面的代码可以工作,如果您手动使用日期选择器将日期和时间与用户日期和时间匹配,它将打印出来。但是,该代码不起报警作用。我可以在用户时间之前设置日期选择器,并且当用户时间与日期选择器计时器匹配时,不会打印任何内容。我只希望能够在中选择日期/时间当用户最终匹配日期选择器时,只需打印cool即可 import UIKit var dateFormatter : DateFormatter! let datePicker2 = UIDatePicker(); let date = Date(

我下面的代码可以工作,如果您手动使用日期选择器将日期和时间与用户日期和时间匹配,它将打印出来。但是,该代码不起报警作用。我可以在用户时间之前设置日期选择器,并且当用户时间与日期选择器计时器匹配时,不会打印任何内容。我只希望能够在中选择日期/时间当用户最终匹配日期选择器时,只需打印cool即可

import UIKit

 var dateFormatter : DateFormatter!

 let datePicker2 = UIDatePicker();
 let date = Date()

 class ViewController: UIViewController {

@IBOutlet var dateLabel: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()

    let datePicker : UIDatePicker = UIDatePicker(frame: CGRect(x: 0,y: 330,width: self.view.frame.size.width,height: 220))
    datePicker.datePickerMode = UIDatePickerMode.dateAndTime
    self.view.addSubview(datePicker)

    datePicker.addTarget(self, action: #selector(ViewController.change(_:)), for: UIControlEvents.valueChanged)

    dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "YYYY-MM-dd hh:mm"
}

@IBAction func change(_ sender : UIDatePicker)
{
    let pickerString = dateFormatter.string(from: sender.date)
let nowString = dateFormatter.string(from: Date())

dateLabel.text = pickerString
if pickerString == nowString {
    print("cool")
}
}}

之所以会发生这种情况,是因为只有在选择器移动时才会调用if语句。您需要一个每秒触发一次的计时器,以查看它们是否匹配。要使用下面的方法,只需将pickerString和nowString向上移动到全局变量。如果您不喜欢,可以根据需要重构和使用

var pickerString: String?
var nowString: String?

override func viewDidLoad() {
    super.viewDidLoad()
    let _ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
        if pickerString == nowString {
            print("cool")
        }
}

#BuildSuccessed

FYI-您没有更新我在中提到的日期格式。