我正在使用CalendarStore API创建任务(CalTask项目)。我的假设是,通过这样做,这些项目将自动同步到iCloud(假设用户在“系统偏好设置”中进行了此设置)。事实上,CalendarStore文档说:
Calendar Store数据库存储记录的本地副本 属于Calendars架构。如果是MobileMe系统首选项 配置为同步日历架构,然后您对这些更改 记录,使用Calendar Store编程接口,也是 同步。
但似乎只是在CalendarStore中创建项目不会触发它们的iCloud同步。我知道我的项目正在进入CalendarStore,因为我看到了更改(我观察CalTasksChangedNotification
和CalTasksChangedExternallyNotification
,我的更改正在进行中)。但是直到我运行iCal,才会发生iCloud同步。
我认为我的代码中没有任何错误。实际上,您可以使用Apple的CalendarItems示例代码重现这一点。在运行iCal之前,创建任务和事件不会触发CalendarStore同步。
Pre-iCloud,你使用SyncServices来做这件事(很好的文章here),但我有点认为这不适用于Lion和iCloud。事实上,我甚至找不到Apple的SyncServices文档。
我知道可以通过编程方式触发CalendarStore同步到iCloud,因为其他应用程序会执行此操作(我正在看着你,Fantastical)。任何人都可以给我任何指示吗?
有一对similar questions,但它们是pre-iCloud,似乎没有得到解决。
更新虽然它似乎仍有效,但我发现Lion中正式弃用了Sync Services。真的没有替代品吗?