提问人:Uri 提问时间:11/3/2009 最后编辑:Mike AbdullahUri 更新时间:3/25/2013 访问量:9840
在 iCal 上获取/设置日历事件(以编程方式)
Get / Set calendar events on iCal (programmatically)
问:
是否有任何客观的 C API 或对象可以让我访问 iCal 及其事件? 我需要读取给定日期的日历事件,并选择性地设置一个新事件。
代码是纯 C 或目标 C(在程序的 GUI 版本中)。我在 mac os 10.6 上使用 xcode。
示例代码将不胜感激。
答:
1赞
Ned Deily
11/4/2009
#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')
评论
0赞
Uri
11/4/2009
谢谢,但即使我非常喜欢 Python 和其他脚本,这次我也不能使用它。C 或目标 C
0赞
Ned Deily
11/4/2009
将该代码转换为 Appscript 的 Objective C 版本应该很简单。
0赞
Uri
11/4/2009
我首先问的原因是因为我什至不知道我需要哪些对象或 API 才能与日历商店交谈。因此,如果我不知道我需要什么功能,翻译它会有点困难。
0赞
Ned Deily
11/5/2009
我不确定我是否理解正确,但是,如果您想了解 iCal 脚本数据模型,与任何 OS X 可编写脚本的应用程序一样,执行此操作的标准方法是使用 AppleScript 编辑器(在 /Applications/Utilites 中)打开词典命令来内省模型。但在这种情况下,请使用 Appscript (appscript.sourceforge.net/tools.html) 提供的工具:ASDictionary 将 iCal 的数据模型字典转换为 Objective C-appscript 语法,还可以自动生成所有 Objective C 粘附代码来访问该数据模型。无论如何,祝你好运。
1赞
Mike Abdullah
11/5/2009
使用 Apple Events 的一大缺点是需要在访问 iCal 时启动它。日历存储的设计正是为了避免这样做。
5赞
andrewrjones
3/25/2013
#2
评论