在我的应用中,我使用EventKit
API访问设备上的日历,并在我的视图中显示它们。但是,在使用网络日历时,我怀疑EKEventStore
只会在查询时返回某种缓存/本地事件列表,而不是重新加载日历并返回实际/最新内容。
当启动本机日历应用程序时,应用程序将刷新/重新加载所有日历,同步任何网络共享日历。现在回到我的应用程序也会显示新同步的事件。
除此之外,我发现通过我的应用和EventKit / EventKitUI
修改任何事件(删除/更新)都不会同步回e。 G。我的Mac日历。
简而言之:有没有办法强制与EventKit
/ iOS SDK中的网络共享日历同步?
答案 0 :(得分:10)
您可以使用EKEventStore
实例的- (void)refreshSourcesIfNecessary方法:
...如果本地数据已过期,则从远程来源提取新数据。
这将通过获取最新的远程数据来强制更新本地日历存储。我有一种感觉,这是本机iOS日历应用程序用于提示更新的方法。
对于未与Mac同步的已删除和更新日历活动的问题,您确定在进行修改后在EKEventStore
实例上致电- (void)commit:了吗?
或者,EKEventStore
中有一些方法可用于保存和删除日历和事件,这些日历和事件也提供可立即提交更改的提交参数。我会发布链接,但作为一个新用户,我只能使用两个超链接。
- (void)saveEvent:span:commit:error:
- (void)removeEvent:span:commit:error:
假设这些事件被添加到基于云的日历中,这应该会使您的更改与Mac同步。