2012-06-27 40 views
1

在我的应用程序中,我使用EventKit API访问设备上的日历,并在我的视图中显示它们。但是,在使用网络日历时,我怀疑EKEventStore只会在查询时返回某种缓存/本地事件列表,而不是重新加载日历并返回实际/最新内容。
当本机日历应用程序启动时,应用程序将刷新/重新加载所有日历,同步任何网络共享日历。回到我的应用程序现在还会显示新同步的事件。EventKit同步问题

除此之外,我发现通过我的应用程序和EventKit/EventKitUI修改任何事件(删除/更新)将不会同步回e。 G。我的Mac日历。

长话短说:有没有办法强制在EventKit/iOS SDK中与网络共享日历同步?

+0

您是否解决了这个问题?我也遇到过这种情况。它似乎最终同步,但可能需要几天时间。正如你所说,本机iOS日历应用程序将强制同步,所以它看起来有些特别。 –

+0

不幸的是我到目前为止没有提出任何解决方案。 – user826955

回答

10
  1. 可以使用- (void)refreshSourcesIfNecessary方法的EKEventStore实例来:

    ...从远程源获取新数据,如果本地数据是过时的。

    这将通过获取最新的远程数据来强制更新本地日历存储。我有一种感觉,这是本机iOS日历应用程序用来提示更新的方法。

  2. 至于与删除和更新日历事件不同步到您的Mac的问题,你确定你在你做了修改后在你的EKEventStore实例上调用- (void)commit:

    另外,EKEventStore中还有一些方法可供选择,用于保存和删除日历和事件,这些日历和事件还提供可立即提交更改的提交参数。我会张贴链接,但作为新用户,我只能使用两个超链接。

    - (void)saveEvent:span:commit:error:
    - (void)removeEvent:span:commit:error:

    假设这些事件被添加到基于云的日历,这应该有同步更改到Mac的效果。