通知每分钟触发 6 次 (Swift4)



每次我的通知计时器响起时,它都会在一分钟内重复 6 次。我只希望通知每分钟触发一次。如何编写代码,使通知每分钟仅响一次。

import UIKit
class ViewController: UIViewController {
    var timer = Timer()
    var passingDate : Date?
    @IBOutlet var dptext: UITextField!
    let datePicker = UIDatePicker()
    override func viewDidLoad() {
        createDatePicker()
        timer  = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(ViewController.testDate), userInfo: nil, repeats: true)
    }
    func createDatePicker() {
        datePicker.datePickerMode = .dateAndTime
        let toolbar = UIToolbar()
        toolbar.sizeToFit()
        let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
        toolbar.setItems([doneButton], animated: false)
        dptext.inputAccessoryView = toolbar
        dptext.inputView = datePicker
    }
    @objc func testDate() {
        if Calendar.current.isDate(datePicker.date, equalTo: Date(), toGranularity: .minute) {
            print("success")
            if let passingDate = passingDate, Calendar.current.isDate(datePicker.date, equalTo: passingDate, toGranularity: .minute) {
                // Previous date existing, and is in the same minute as the current date : do nothing
                return
            }
            passingDate = datePicker.date
            print("success")
        }
    }
    @objc func donePressed() {
        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = .short
        dateFormatter.timeStyle = .short
        dptext.text = dateFormatter.string(from: datePicker.date)
        self.view.endEditing(true)
    }
}

timeInterval10 更改为 60

timer  = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(ViewController.testDate), userInfo: nil, repeats: true)

最新更新