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 中。然后你应该在你的日志控制台上得到这个日志,点击相应的按钮后。
我做了一个待办事项列表应用程序。在应用程序中,用户可以 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 中。然后你应该在你的日志控制台上得到这个日志,点击相应的按钮后。