【问题标题】:Using EventStore, can I create a new iCal calendary type?使用 EventStore,我可以创建新的 iCal 日历类型吗?
【发布时间】:2012-01-17 06:33:42
【问题描述】:

所以在我的应用程序中,我非常依赖iCal,我可以使用EventStore 添加事件,但只能添加到“defaultCalendarForNewEvents”。我想为我在应用程序中创建的事件创建一个新日历,比如说 MyApp 日历,它的行为很像 iCal 日历,如“家庭”、“工作”等。

有没有办法以编程方式做到这一点?

现在,我已经尝试过了:

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];
}

这在我的App Delegate 中调用,如果日历不在日历数组中,我会尝试创建它。但是,这不起作用。

任何帮助将不胜感激!

【问题讨论】:

    标签: ios ios5 icalendar eventkit


    【解决方案1】:

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

    EKCalendar *newCalendar = [EKCalendar calendarWithEventStore:eventStore];
    

    【讨论】:

    • 虽然这似乎确实创建了一个新日历,但我尝试使用它,然后将我的活动日历设置为我创建的这个新日历。但是,这不起作用,因为当我尝试将事件保存到 eventStore 时出现错误。
    猜你喜欢
    • 2013-01-09
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多