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を確認するとイベントが追加されているのが確認できます。