我有一个添加新提醒的功能。在此功能中,提醒将具有提醒标题和特定日期和时间的警报。
该函数当前看起来像这样:
var eventStore = EKEventStore()
var reminders = [EKReminder]()
func addReminder(date: Date, reminderTitle: String) {
eventStore.requestAccess(to: EKEntityType.reminder, completion: {
granted, error in
if (granted) && (error == nil) {
let reminder:EKReminder = EKReminder(eventStore: self.eventStore)
reminder.title = reminderTitle
let alarmTime = date
let alarm = EKAlarm(absoluteDate: alarmTime)
reminder.addAlarm(alarm)
reminder.calendar = self.eventStore.defaultCalendarForNewReminders()
do {
try self.eventStore.save(reminder, commit: true)
} catch {
print("Cannot save")
return
}
print("Reminder saved")
}
})
}
现在,我想添加一个EKRecurrenceRule,它将永远每周一次重复警报/提醒(没有特定的结束日期)。
为了得到更好的解释,这是我希望我的提醒最终显示的示例:Example
这是我已经尝试过的方法:
let recurrenceRule = EKRecurrenceRule(recurrenceWith: .weekly, interval: 1, daysOfTheWeek: [EKRecurrenceDayOfWeek(.monday)], daysOfTheMonth: nil, monthsOfTheYear: nil, weeksOfTheYear: nil, daysOfTheYear: nil, setPositions: nil, end: nil)
reminder.addRecurrenceRule(recurrenceRule)
基本上,这应该在每个星期一重复提醒,但是由于某些原因,我无法保存提醒。
有关如何成功保存提醒的任何帮助?
SOLUTION:为了使定期发生的事件/提醒有效,提醒必须具有定义的到期日。
if(reminder.recurrenceRules?.count ?? 0 > 0 && reminder.dueDateComponents == nil) {
let calendar = Calendar.current
let components = calendar.dateComponents([Calendar.Component.day, Calendar.Component.month, Calendar.Component.year], from: date)
reminder.dueDateComponents = components
}