【发布时间】:2021-03-21 05:10:06
【问题描述】:
我正在尝试为本地通知设置两个不同的时间 - 默认一个是每天上午 10 点(如果用户没有触摸日期选择器来选择他们自己的通知时间,也就是零),一个基于用户的输入。用户输入一个确实有效并每天发送通知,但如果没有选择时间,则默认时间不起作用。
这是我的代码,谁能告诉我我做错了什么?我基本上想检查用户输入是否为零,它应该恢复到默认时间设置。
在设置中:
IBOutlet var userDatePicker: UIDatePicker!
IBAction func pickerValueChanged(_ sender: UIDatePicker) {
var selectedTime = Date()
selectedTime = sender.date
// convert to data type DateComponents
let convertedSelectedTime = calendar.dateComponents([.hour, .minute,], from: selectedTime)
let delegate = UIApplication.shared.delegate as? AppDelegate
delegate?.sendNotification(with: convertedSelectedTime)
UserDefaults.standard.set(selectedTime, forKey: "SavedTime")
}
在 AppDelegate 中:
func sendNotification(with userSelectedTime: DateComponents?) {
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Testing"
content.body = "testing"
var defaultTime = DateComponents()
defaultTime.hour = 10
defaultTime.minute = 00`// trying to set default time to 10 am if user never picks a time`
let components = userSelectedTime ?? defaultTime//option between the two
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
}
【问题讨论】:
标签: swift uilocalnotification nsdatecomponents