0

したがって、私のアプリでは に大きく依存しておりiCal、 を使用してイベントを追加できますEventStoreが、「defaultCalendarForNewEvents」にのみ追加できます。iCalアプリで作成したイベントのためだけに新しいカレンダーを作成したいと思います。たとえば、「自宅」、「仕事」などのカレンダーと同じように動作する MyApp カレンダーとしましょう。

これをプログラムで行う方法はありますか?

今、私はこれを試しました:

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、カレンダーがカレンダー配列にない場合に呼び出され、作成しようとします。ただし、これは機能しません。

どんな助けでも大歓迎です!

4

1 に答える 1

0

ドキュメントによると、EKCalendar の+calendarWithEventStore:メソッドを使用して、指定したイベント ストアに新しいカレンダーを作成します。次のようになると思います。

EKCalendar *newCalendar = [EKCalendar calendarWithEventStore:eventStore];
于 2012-01-17T06:54:17.547 に答える