2

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

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

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

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

我正在考虑存储 eventIdentifier 和 Start & End 日期,以便我可以从 Event Store 获取正确的事件......但这看起来很笨拙,并且可能会使跟踪用户在我的应用程序启动之间在他们的日历中所做的更改变得棘手。

有什么想法或建议吗?

4

1 回答 1

0

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

不幸的是,该框架并没有为我们提供事件的原始数据,它只是提供了在指定时间间隔内发生的所有事件。因此,没有这样的事情(使用框架)检索单个重复事件然后扩展其重复以使其第n次出现:您需要手动对检索到的事件进行后处理以找到那些事件你有兴趣。

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

于 2011-04-29T02:06:58.313 回答