iCalにイベントを追加する方法です。

(iOS 5で試しています。)

シミュレータにはiCalがなかったので、

実際のiPadで動かしています。

次のような手順で動くサンプルを作ってみます。

1. iPad上の操作(アプリを動かす前に)

 iCalでThink というカレンダーを作る。

2. アプリ

 カレンダーThinkに新しいイベントを追加する。

サンプルコード(ViewController.m に実装)

EventKitを使うので、ソースの頭に

#import <EventKit/EventKit.h>

を追加して、Build Phasesの Link Binaryにも追加しておきましょう。

あとは、こんな感じで。

– (void)viewDidLoad

{

    [super viewDidLoad];

    

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

    

    EKCalendar *calendar = nil;

    

    for (EKCalendar *cal in eventStore.calendars) {

        if ([cal.title isEqual:@”Think”]) {

            calendar = cal;

        }

    }

    

    // エラー用

    // Think というTitleのカレンダーがなかったら Alert

    if(!calendar) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Error” message:@”Calendar Title [Think] is not found” delegate:self cancelButtonTitle:@”OK” otherButtonTitles:nil];

        [alert show];

    }

    

    // イベントを追加

    EKEvent *event = [EKEvent eventWithEventStore:eventStore];

    event.calendar = calendar;

    

    event.title = @”テストイベント;

    event.notes = @”イベント\nテストです。;

    event.startDate = [NSDate date]; //

    event.endDate = [NSDate date];

    

    NSError *err;

    BOOL result = NO; 

    result = [eventStore saveEvent:event span:EKSpanThisEvent error:&err];

    

    if (result == NO) {

        NSLog(@”error = %@”, [err localizedDescription]);

    }

    

}

実行後に、iCalを確認するとイベントが追加されているのが確認できます。