从用户的日历中保留事件

时间:2011-04-28 19:14:48

标签: iphone ios eventkit

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

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

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

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

我正在考虑存储eventIdentifier和Start&结束日期,以便我可以从事件存储中获取正确的事件...但这看起来非常糟糕,并且可能会在我的应用程序启动之间使用户在日历中进行跟踪更改。

有任何想法或建议吗?

1 个答案:

答案 0 :(得分:1)

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

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

这里的问题是提供的API不是用于同步目的。许多开发人员抱怨并仍然通过使用Radar提交错误/功能请求来抱怨这一点。到目前为止,Apple回答的问题是API实现了不同的目的,因为同步是自动的。但是,通过iTunes进行同步时却是如此,但不是以编程方式进行。