EKEvent的eventIdentifier和calendarItemExternalIdentifier之间的区别

Z S*_*Z S 9 objective-c ios eventkit ekevent ekeventstore

阅读Apple的文档,我仍然对EKCalenderItem的calendarItemExternalIdentifierEKEvent的eventIdentifier之间的差异感到困惑,我们应该使用哪一个来识别不同设备上的日历事件.特别:

EKCalendarItem calendarItemExternalIdentifier 日历服务器提供的日历项的外部标识符.(只读)

EKEvent eventIdentifier:事件的唯一标识符.(只读)

EKCalendarItem calendarItemExternalIdentifier是在iOS6中添加的,我原本认为这将是我需要保存的标识符,以便稍后调用,EKEventStore eventWithIdenfier:因为它声称:

此标识符允许您跨多个设备访问相同的事件或提醒.

但是在我自己的测试中,似乎当我创建并保存一个新的EKEvent时,我从EKEvent对象获得的eventIdenifier是唯一且有用的,而我得到的calendarItemExternalIdentifier似乎不适用于 EKEventStore eventWithIdenfier:

如果有人有确凿的答案,我很想知道.

myg*_*gzi 8

calendarItemExternalIdentifier是事件的RFC 5545全局唯一标识符.它不是特定于EKEventStore,实际上它代表跨设备的事件(以及非iOS客户端).如果您要从收件箱中打开.ics附件,则此值将显示在邀请的UID字段中.

也就是说,您无法直接根据此标识符查找EKEventStore事件.相反,您需要在事件存储上执行谓词搜索,并检查每个事件的calendarItemExternalIdentifier.

  • 是的,可以查找:因为ios 6.0有calendarItemsWithExternalIdentifier(externalIdentifier:String) - > [EKCalendarItem] (3认同)