如何通过设备上的Sync来唯一标识EKEvent

我正在尝试使项目的事件同步function 。 我需要与远程服务器同步事件。

  • 假设我在设备A中安装了应用程序
  • 如果我login到另一个设备让我们拿B,那么从A同步的事件也应该出现在设备B中,B的事件也应该同步。
  • 现在,如果我再次login到设备A,B的事件应该被添加。 但是之前来自A的事件不应该再次被添加到设备A为此,我决定将其eventIdentifier在远程数据库上。
  • 当我再次返回到设备B时,现在发生的问题是先前从设备A同步的事件已经在那里,所以不应该再次添加这些事件。 但是,由于eventIdentifiers是根据设备A, 所以无法识别事件是否已经添加到设备B中。

任何人都可以build议我实现这样的跨平台事件同步的方式没有重复的事件?

EKEvent具有属性eventIdentifier ,但它只是readOnly属性,我无法将事件的远程ID保存在某处。

eventIdentifier不在设备之间共享 – 同一个事件在不同的设备上最有可能具有不同的eventIdentifier

相反,你需要使用calendarItemExternalIdentifier – 这将(通常)在不同的设备上是相同的。
一个(比较罕见的)exception是最近使用EventKit创build了一个事件,而事件尚未同步到服务器。 这将导致calndarItemExternalIdentifier稍后更改 。

使用calendarItemExternalIdentifier你可以通过查询数据库中是否有相同的calendarItemExternalIdentifier来查看是否已经添加了一个事件。 上述例外需要分开处理。