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