Objective-C (iOS): カレンダーにイベントを追加

#import <EventKit/EventKit.h>

- (void)createEventHelper {
    //OSのバージョン判定
    NSString *version = [[UIDevice currentDevice] systemVersion];
    if ([version floatValue] >= 6.0f) {
        // iOS6 以上の場合、認証を行う
        // カレンダー・リマインダーへのアクセス許可確認
        EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
        
        if (status == EKAuthorizationStatusNotDetermined) {
            // ユーザーにまだアクセスの許可を求めていない
            // 許可を求める
            EKEventStore *eventStore = [[EKEventStore alloc] init];
            [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
                if (granted) {
                    // 許可
                    [self createEvent];
                } else {
                    // あかん
                    [self infoEventSetting];
                }
            }];
        }
        else if (status == EKAuthorizationStatusDenied || status == EKAuthorizationStatusRestricted) {
            // EKAuthorizationStatusRestricted - iPhoneの設定の「機能制限」でカレンダー・リマインダーへのアクセスを制限している
            // EKAuthorizationStatusDenied - カレンダー・リマインダーへのアクセスをユーザーから拒否されている
            [self infoEventSetting];
        }
        else if (status == EKAuthorizationStatusAuthorized) {
            //カレンダー・リマインダーへのアクセスをユーザーが許可している
            [self createEvent];
        }
    } else {
        [self createEvent];
    }
}

- (void)infoEventSetting {
    UIAlertView *notify = [[UIAlertView alloc] initWithTitle:@"Failed"
                                                     message:@"設定からこのアプリにカレンダー設定を許可にしてください"
                                                    delegate:nil
                                           cancelButtonTitle:@"OK"
                                           otherButtonTitles:nil];
    [notify show];
}

- (void)createEvent {
    
    EKEventStore *eventStore = [[EKEventStore alloc] init];
    //////////////////////////
    //カレンダーリストの取得
    EKCalendar *targetCalendar;
    NSArray *calendars = [eventStore calendarsForEntityType:EKEntityTypeEvent];
    for (EKCalendar *calendar in calendars) {
        NSLog(@"%@", calendar);
        if ([calendar.title isEqualToString:@"ホーム"]) {
            targetCalendar = calendar;
        }
    }
    
    //////////////////////////
    //カレンダーに予定を登録
    NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init];
    [inputDateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
    NSDate *date = [inputDateFormatter dateFromString:@"2014/03/24 21:54:00"];
    
    NSLog(@"設定した時刻 -> %@", date);
    
    EKEvent *myEvent  = [EKEvent eventWithEventStore:eventStore];
    
    myEvent.title     = @"New Event";
    myEvent.startDate = date;
    myEvent.endDate   = date;
    myEvent.allDay = YES;
    
//    [myEvent setCalendar:[eventDB defaultCalendarForNewEvents]];
    [myEvent setCalendar:targetCalendar];
    
    NSError *err;
    
    [eventStore saveEvent:myEvent span:EKSpanThisEvent error:&err];
    
    if (err == noErr) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success"
                                                        message:@"登録しました"
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];
    } else {
        NSLog(@"%@", err);
    }
}