将EKRecurrenceRule添加到不起作用的提醒(创建重复事件问题)

问题描述 投票:0回答:1

我有一个添加新提醒的功能。在此功能中,提醒将具有提醒标题和特定日期和时间的警报。

该函数当前看起来像这样:

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)

基本上,这应该在每个星期一重复提醒,但是由于某些原因,我无法保存提醒。

有关如何成功保存提醒的任何帮助?

swift xcode reminders ekrecurrencerule
1个回答
0
投票

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
}
© www.soinside.com 2019 - 2024. All rights reserved.