使用EventStore,我可以创建新的iCal日历类型吗?

问题描述:

因此,在我的应用程序中,我非常依赖iCal,并且可以使用EventStore添加事件,但只能添加到“defaultCalendarForNewEvents”。我想为应用中创建的事件制作新的日历,比如说MyApp日历,其行为与“首页”,“工作”等iCal日历类似。使用EventStore,我可以创建新的iCal日历类型吗?

有没有办法做这个progamatically?

现在,我已经试过这样:

EKEventStore *eventStore = [[EKEventStore alloc] init]; 

NSArray *calendars = [eventStore calendars]; 
BOOL calendarHasBeenInitialized = NO; 
for(NSCalendar *cal in calendars) 
{ 
    if([cal.calendarIdentifier isEqualToString:@"Workout Tracker"]) 
    { 
     calendarHasBeenInitialized = YES; 
    } 
} 
if(!calendarHasBeenInitialized) 
{ 
    NSString *string = [[NSString alloc] initWithString:@"Workout Tracker"]; 
    NSCalendar *workoutCalendar = (__bridge NSCalendar *)(CFCalendarCreateWithIdentifier(kCFAllocatorSystemDefault, (__bridge CFStringRef)string)); 
    EKCalendar *ekcalendar = (EKCalendar *)workoutCalendar; 
    NSError *error; 
    [eventStore saveCalendar:ekcalendar commit:YES error:&error]; 
} 

这就是所谓的在我的应用程序代表,其中如果日历不是日历阵中,我尝试创建它。但是,这不起作用。

任何帮助,将不胜感激!

根据文档,使用EKCalendar的+calendarWithEventStore:方法在您指定的事件存储中创建新日历。我期望它会这样:

EKCalendar *newCalendar = [EKCalendar calendarWithEventStore:eventStore]; 
+0

虽然这确实看起来会创建一个新的日历,但我尝试过使用它,然后将我的活动日历设置为我创建的这个新日历。但是,这并不奏效,因为当我尝试将事件保存到eventStore时出现错误。 – BHendricks 2012-01-17 07:26:52