阅读Apple的文档,我仍然对
EKCalenderItem’s calendarItemExternalIdentifier和
EKEvent’s eventIdentifier之间的差异感到困惑,我们应该使用哪一个来识别不同设备上的日历事件.特别:
EKCalendarItem calendarItemExternalIdentifier
The calendar item’s external identifier as provided by the calendar server. (read-only)
和
EKEvent eventIdentifier: A unique identifier for the event. (read-only)
EKCalendarItem calendarItemExternalIdentifier是在iOS6中添加的,我原以为这是我需要保存的标识符,以便稍后在EKEventStore eventWithIdenfier中调用:因为它声称:
This identifier allows you to access the same event or reminder across
multiple devices.
但是在我自己的测试中,似乎当我创建并保存新的EKEvent时,我从EKEvent对象获得的eventIdenifier是唯一且有用的,而我得到的calendarItemExternalIdentifier似乎不适用于EKEventStore eventWithIdenfier:
如果有人有确凿的答案,我很想知道.
解决方法
calendarItemExternalIdentifier是事件的
RFC 5545全局唯一标识符.它不是特定于EKEventStore,实际上它代表跨设备的事件(以及非iOS客户端).如果您要从收件箱中打开.ics附件,则此值将显示在邀请的UID字段中.
也就是说,您无法直接根据此标识符查找EKEventStore事件.相反,您需要在事件存储上执行谓词搜索,并检查每个事件的calendarItemExternalIdentifier.