我有一个会议策划应用程序,它有自己的sqlite数据库,并将其自身附加到日历框架中的EKEvent。我正在使用事件标识符作为会议数据的外键。当用户在日历应用程序中更改事件的日历时,问题就出现了。标识符更改,我无法知道它已更改,因为它是在我的应用程序之外。 如果有人有任何想法,请告诉我
答案 0 :(得分:1)
从iOS 5.0开始,无法确定唯一标识事件
答案 1 :(得分:1)
文档警告说“如果事件的日历发生变化,其标识符很可能也会发生变化。”
另一个问题是重复事件的所有实例都具有相同的标识符; -[EKEventStore eventWithIdentifier:]
似乎返回第一个实例。 (我甚至看到过带有nil标识符的事件;我不记得究竟是什么原因。)
如果-eventWithIdentifier:
返回非重复事件,那么你可能会很高兴。否则,解决这两个问题的最简单方法可能是在大约同一时间搜索所有日历中的事件并使用启发式方法来确定最佳匹配,或者如果没有匹配项足够好,则要求用户选择相应的事件。
您可能还想查看Google日历在编辑重复事件的单个实例时执行的操作(它可能会创建一个带有新标识符的事件,并在原始事件的重复信息中添加“漏洞”,这可能会破坏您的启发式)。
答案 2 :(得分:0)
我现在面临这个问题,试图在我的应用程序中保持同步的EventStore与内部数据库,我的解决方案是在应用程序内部的EKEvents和事件之间进行映射,如果我发现匹配它没关系但是所有的将删除与EKEvents不匹配的事件,并且将添加所有不匹配的EKEvents,这样做也会在同步期间添加刚修改的EKEvents。