在iCal上获取/设置日历事件(以编程方式)

时间:2009-11-03 14:32:37

标签: objective-c macos icalendar calendar-store

是否有任何客观的C API或对象可以让我访问iCal及其事件? 我需要阅读给定日期的日历事件,并可选择设置新事件。

代码是普通C或目标C(在程序的GUI版本中)。我在mac os 10.6上使用xcode。

非常感谢示例代码。

2 个答案:

答案 0 :(得分:5)

截至10.8(Mountain Lion),Calendar Store is deprecated。您现在应该使用Event Kit

答案 1 :(得分:1)

您可能会发现使用iCal的Apple Events脚本界面更容易。如果您不喜欢直接使用AppleScript的想法,那么Apple的Scripting Bridge或甚至更好地使用Appscript用于Objective-C,Ruby或Python。这是使用py-appscript访问和修改给定日期事件的一种方法:

>>> from appscript import *
>>> from datetime import datetime
>>> start_time = datetime(2009,10,26)
>>> end_time = datetime(2009,10,26,23,59,59)
>>> calendar = app('iCal').calendars['Home']
>>> for event in calendar.events[(its.start_date >= start_time).AND(its.start_date <= end_time)]():
...   event_properties = event.properties()
...   print event_properties[k.start_date], event_properties[k.summary]
... 
2009-10-26 18:40:00 <event 1>
2009-10-26 23:38:00 <event 2>
>>> event.summary.set(to='something else')