【问题标题】:Missing EKEvents when saving multiple Google calendar events保存多个 Google 日历活动时缺少 EKEvents
【发布时间】:2017-02-24 23:22:11
【问题描述】:

我正在循环使用 EventKit 为每个对象创建一个事件的大约 100 个对象。在保存所有对象并且知道为每个对象成功获取 calendarIdentifier 之前,我不会“提交”。然而,大约 10-15% 的事件从未显示在设备日历或在线上。这只发生在谷歌日历上。 iCloud 和本地工作正常。

我明白在创建多个这样的事件时,最好使用:

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

...和

[eventStore commit:&error];

...在创建所有事件之后。我还尝试通过每个循环进行提交,并且可以预见地在通信被中断时遇到错误。感谢任何帮助。

【问题讨论】:

  • 我遇到了完全相同的问题,并且从 iOS8 开始就有了。我也尝试过 stackoverflow,但没有运气:stackoverflow.com/questions/28665139/… 如果您找到了解决方案,请告诉我! brgds。
  • 这仍然让我抓狂。我检查了你的线程,确实......完全一样。您遇到过解决方案吗?
  • 与 iOS 13.6 完全相同!同时有什么解决方案吗?原帖已有 5 年历史。

标签: ios calendar google-calendar-api eventkit ekevent


【解决方案1】:

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

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

所以我建议其他用户在使用 EventKit 对 Google 日历进行批处理操作时尝试类似的解决方案。在下次获取之前再次检查 eventIdentifiers。如果某些 eventIdentifier 应该存在或不应该存在(使用 [EKEventStore eventWithIdentifier]),请重新添加或删除。

只有我的 2 美分。

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2012-08-08
    相关资源
    最近更新 更多