如何在Objective-C中打开iCal到特定的事件/日期?

时间:2013-01-23 04:29:06

标签: objective-c macos calendar icalendar

我似乎无法在Mountain Lion中找到成功在代码中打开ical的方法。

我宁愿不使用applescript,也不要使用cocoa。让我知道是否有一个api我不见了。

目前我只使用:

[[NSWorkspace sharedWorkspace] launchApplication:@"iCal"];

谢谢!!!

2 个答案:

答案 0 :(得分:0)

如果您只想启动应用程序,那么它基本上就是您正在做的事情。还有一些进一步的信息in the docs和一个很好的写作here

但是,如果您想在代码中集成日历,也许您应该使用Event Kit Framework

答案 1 :(得分:0)

实际上我使用了以下代码:

-(void)show:(NSString*)eventUid InCalendar:(NSString*)calUid {
  iCalApplication *iCal = [SBApplication applicationWithBundleIdentifier:(@"com.apple.iCal")];
  [iCal activate];

  SBElementArray *sbCalendars = [iCal calendars];
  if(sbCalendars != nil && [sbCalendars objectWithID:calUid] != nil) {
    iCalCalendar *sbCalendar = [sbCalendars objectWithID:calUid];
    if([sbCalendar events] != nil){
      iCalEvent *sbCalEvent = [[sbCalendar events] objectWithID:eventUid];
      if(sbCalEvent != nil){
        NSLog(@"%@", sbCalEvent);
        [sbCalEvent show];
      }
    }
  }
}

自从他们推出Sandbox以来,它已经工作了很长时间但停止了工作。我在一年多前提交了一个错误,但没有得到Apple的回答。