DateComponents 和通知未显示

DateComponents and Notifications Not Showing

我做了一个待办事项列表应用程序。在应用程序中,用户可以 select 4 个按钮中的 1 个来设置通知。立即,上午,下午和晚上。目前,晚上和即时工作,但上午和下午不工作,我不确定为什么。

这是我晚上的密码:

@IBAction func eveningTapped(_ sender: Any) {

    eveningEnabled = true
    morningEnabled = false
    lockscreenEnabled = false
    afternoonEnabled = false
}

if eveningEnabled == true {
        var dateComponents = DateComponents()
        dateComponents.hour = 18
        dateComponents.minute = 00
        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
        let content = UNMutableNotificationContent()
        content.title = taskTextField.text!
        content.body = DescTextField.text!
        content.sound = UNNotificationSound.default()
        content.badge = 1

        let identifier = "UYLLocalNotification"
        let request = UNNotificationRequest(identifier: identifier,
                                            content: content, trigger: trigger)
        center.add(request, withCompletionHandler: { (error) in
            if error != nil {
                // Something went wrong - another alert
            }
        })
    }

这完全可以正常工作,但早上不工作,这是代码:

@IBAction func morningTapped(_ sender: Any) {

    morningEnabled = true
    lockscreenEnabled = false
    afternoonEnabled = false
    eveningEnabled = false
}

if morningEnabled == true {
        var dateComponents = DateComponents()
        dateComponents.hour = 07
        dateComponents.minute = 00
        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
        let content = UNMutableNotificationContent()
        content.title = taskTextField.text!
        content.body = DescTextField.text!
        content.sound = UNNotificationSound.default()
        content.badge = 1

        let identifier = "UYLLocalNotification"
        let request = UNNotificationRequest(identifier: identifier,
                                            content: content, trigger: trigger)
        center.add(request, withCompletionHandler: { (error) in
            if error != nil {
                // Something went wrong - another alert
            }
        })
    }

由于您的代码在两个操作中完全相同(DateComponents 除外),因此 运行 时应该没有区别。

但是因为你有不同('morning' 不工作)原因必须在其他地方(而不是在代码中,你 post 在这里)。也许您早上的 tapAction 没有在 InterfaceBuilder 中正确连接?

如果您 post 更多代码,我们可能会更好地帮助查找错误。

首先你应该检查,当你点击时,你的 tapAction 是否正在执行。您可以通过添加日志命令来执行此操作,如下所示:

print("Morning was tapped")

并将此代码放入您的 tapAction 中。然后你应该在你的日志控制台上得到这个日志,点击相应的按钮后。