2015-12-22 22 views
1

我正在循环使用约100个为每个使用EventKit创建事件的对象。直到所有对象都保存并且知道每个对象的calendarIdentifier被成功获取后,我才会“提交”。然而,大约10-15%的事件从未在设备日历或在线上显示。这只适用于Google日历。 iCloud和本地工作很好。保存多个Google日历事件时缺少EKEvents

创建多个这样的活动时,我明白,这是最好的使用方法:

[eventStore saveEvent:event span:EKSpanThisEvent commit:NO error:&error]; 

...和

[eventStore commit:&error]; 

...已创建的所有事件之后。我也尝试通过每个循环进行承诺,并可预见地发现通信中断时出现错误。感谢任何帮助。

+0

我有完全相同的问题,并自iOS8以来。我也试过在stackoverflow以及,但没有运气:http://stackoverflow.com/questions/28665139/batch-saving-ekevents-to-google-calendar-causing-loss-of-random-events 让我知道你是否找到了解决方案! Brgds。 – fisher

+0

这仍然让我发疯。我检查了你的线程,确实......完全一样。你是否遇到过解决方案? –

回答

0

我遇到了类似的问题。当我删除一个EKEvent实例时,会发生我的问题,然后立即保存一个新的EKEvent实例。有时(可能是5个中的3个),删除的事件再次出现。删除没有返回任何错误。对我来说,它看起来没有成功提交,那么EKEventStore会自动回滚“应该删除”的事件。我尝试了所有不同的方式来处理处理,例如,将提交设置为“是”或“否”,再次请求访问,并且只有授予的访问权限为“是”,然后才能启动该过程。但没有区别。我花了几个晚上试图找出是什么原因造成的,但没有任何线索。

然后我将删除的EKEvent的eventIdentifier添加到数组中,并再次验证(在获取事件之前)。如果仍然存在,请再次删除。到目前为止,它运作良好。这是一个肮脏的解决方案,但至少它工作。

因此,我建议其他用户在使用EventKit使用Google日历进行批量操作时尝试类似的解决方案。在下次获取之前再次检查eventIdentifiers。如果某些eventIdentifiers应该或不应该在那里(使用[EKEventStore eventWithIdentifier]),请再次添加或再次删除它。

只是我2美分。