保留用户日历中的事件



我正在开发一个需要记住用户从日历中选择的事件的应用程序,并且我遇到了重复事件的问题。

对于非循环事件,我可以存储eventIdentifier并在需要时从事件存储中获取事件。

但是重复发生的事件都共享相同的eventIdentifier。当我回到事件存储获取事件(基于eventIdentifier)时,我得到了循环链中的第一个事件……而不是用户选择的事件的第n次重复。

由于EventKit不支持NSCoding,我无法通过归档整个EKEvent对象来持久化用户选择的事件。

我正在考虑存储eventIdentifier和Start &结束日期,以便我可以从事件存储中获取正确的事件…但这似乎很笨拙,可能会使跟踪用户在应用程序启动之间的日历更改变得棘手。

有什么想法或建议吗?

即使对于非重复发生的事件,单独的事件标识符也是不够的。实际上,当用户将事件移动到不同的日历时,它可能会发生变化。对于重复发生的事件,它可能在分离事件或拆分重复事件时发生更改。因此,通常的做法是使用信息子集(例如标题、开始和截止日期)搜索事件。你不应该依赖事件标识符。

不幸的是,框架没有为我们提供事件的原始数据,它只提供了在指定时间间隔内事件的所有发生情况。因此,(使用框架)不可能检索单个循环事件,然后扩展其循环以获得其n的出现:您需要手动后处理检索到的事件,以便找到您感兴趣的事件。

这里的问题是所提供的api不是用于同步目的的。许多开发人员通过使用Radar提交bug/功能请求来抱怨这个问题。到目前为止,苹果的回答是,这些api实现了不同的目的,因为同步是自动的。然而,这在通过iTunes同步时是正确的,而不是通过编程同步。

最新更新