我的iOS应用程序创建日历,使用事件填充日历,有时会添加新事件 . 它存储已创建日历的ID,仅适用于它 . 无论如何,在某些情况下,此日历可能会被删除,例如,如果用户关闭与iCloud的同步并选择删除现有日历 . 我希望能够知道日历已被删除,以便我可以创建新日历并再次填充它 . 我尝试过的显而易见的方法是查找我的应用程序存储的ID日历,如果找不到具有此ID的日历,请考虑将其删除 . 但这种方法不起作用 .

问题出在这样的问题:当带有警报的事件添加到日历时,此日历不仅会出现在日历应用程序中,还会出现在“提醒”应用程序中 . 当用户关闭iCloud for Calendars并选择删除现有日历时,只会删除Calendar应用程序中的日历 . 提醒应用程序中的日历仍然存在 . 剩余的日历仍然具有相同的ID,因此无法通过ID识别日历的删除 . 此日历也会停止允许添加事件 . 当应用程序尝试向此日历添加事件时,会引发异常“该日历不支持该类型的项目” .

我想确定事件的“真实”日历被删除了 . 我尝试在删除之前和之后比较日历 . 但是以下属性保持不变:allowsContentModifications,CGColor,immutable,title,type,source,subscribed,supportedEventAvailabilities,calendarIdentifier,description .

有没有遇到过同样的问题?有关如何区分“事件和警报日历”与“仅警报日历”的任何想法?

(我唯一能想到的是尝试添加测试约会,如果此操作失败,请考虑日历是“仅用于警报” . 但这不方便)