假设我必须编写一个应用程序,且该应用程序必须与设备上可用的某个日历同步。我们假设我有“Action”对象,它们具有开始日期、结束日期、重复等属性。
设备A:我创建“Action”对象,然后使用EventKit将它们与名为“Foo”的iCloud日历进行同步。我会得到一些唯一标识符,我需要将它们与我的“Action”对象相关联,以便在未来知道要更新/删除哪个对象。然后,我将我的“Action”对象与自己的服务器进行同步。
设备B:我从服务器获取“Action”对象。我修改它们。我必须更新日历项目。如果在设备B上没有设置“Foo”日历,会发生什么?如果设置了呢?
我想我需要使用
这个
设备A:我创建“Action”对象,然后使用EventKit将它们与名为“Foo”的iCloud日历进行同步。我会得到一些唯一标识符,我需要将它们与我的“Action”对象相关联,以便在未来知道要更新/删除哪个对象。然后,我将我的“Action”对象与自己的服务器进行同步。
设备B:我从服务器获取“Action”对象。我修改它们。我必须更新日历项目。如果在设备B上没有设置“Foo”日历,会发生什么?如果设置了呢?
我想我需要使用
calendarItemExternalIdentifier
而不是calendarItemIdentifier
属性,以便在使用相同日历的多个设备之间唯一地标识事件,对吗?这个
calendarItemExternalIdentifier
是在创建calendarItem时给出的吗?或者是由iCloud服务器给出的?这需要互联网连接才能工作吗?
calendarIdentifier
属性的文档说明如下:
什么是完全同步?与日历进行完全同步将丢失此标识符。您应该通过缓存其其他属性来处理无法获取标识符的日历。