如何在 EventKit 中使用 CalendarIdentifier 获取提醒?

Posted

技术标签:

【中文标题】如何在 EventKit 中使用 CalendarIdentifier 获取提醒?【英文标题】:How to fetch Reminder with CalendarIdentifier in EventKit? 【发布时间】:2018-08-05 06:37:11 【问题描述】:

在 Apple 文档中 使用唯一标识符搜索

如果您知道事件的唯一标识符,因为您之前使用谓词获取它,您可以使用 EKEventStore 方法 event(withIdentifier:) 来获取事件。如果是重复事件,则此方法将返回该事件的第一次发生。您可以使用 eventIdentifier 属性获取事件的唯一标识符。

同样,如果您通过之前使用谓词获取特定提醒的唯一标识符,您可以调用 calendarItem(withIdentifier:) 实例方法。 calendarItem(withIdentifier:) 可以获取任何日历项(提醒和事件),而 event(withIdentifier:) 仅获取事件。

我的问题是我想获取一个 EKReminder 以使用 isCompleted 属性。

 // Mark reminder as completed
 // Use the completed property to mark a reminder as completed
 func complete(_ reminder: EKReminder) 
    reminder.isCompleted = true
    
    /* Some my customize code */
    
    // Update the reminder
    self.save(reminder)

但是 方法 func calendarItem(withIdentifier identifier: String) -> EKCalendarItem? 返回一个 EKCalendarItem。

我不想使用 for 循环准确搜索我想要的提醒。 有什么办法吗?

【问题讨论】:

【参考方案1】:

EKCalendarItemEKReminderEKEvent 的基类。如果您知道日历项是提醒事项,请将其发送至 EKReminder

let reminder = store.calendarItem(withIdentifier: identifier) as! EKReminder

【讨论】:

以上是关于如何在 EventKit 中使用 CalendarIdentifier 获取提醒?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EventKit 中使用 CalendarIdentifier 获取提醒?

如何区分通过我的应用程序保存的事件和使用 EventKit 使用日历应用程序保存的事件?

使用 EventKit 对 iOS 日历进行文本搜索

使用 EventKit 添加事件和日历

EventKit 同步问题

Swift EventKit的初学者指南–请求权限