EKEventStoreを使って、Calendarを全部取得する方法です。

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

注意: 

 今のところ(2012/10)、シミュレータにはiCalが入っていないので、

 カレンダー機能は、実機で試した方がわかりやすいと思います。

Calendarには、TypeとTitleというのがあって、

その組み合わせで複数のカレンダーが登録できます。

Typeはこんな感じで定義されていて、

        typedef enum {

            EKCalendarTypeLocal,

            EKCalendarTypeCalDAV,

            EKCalendarTypeExchange,

            EKCalendarTypeSubscription,

            EKCalendarTypeBirthday,

        } EKCalendarType;

Titleは自分で付けることが可能です。

試しに、自分の端末に登録してあるものを見てみましょう。

※私の場合、iCal に「自宅」、「職場」というのを作っています。

このカレンダーをログに表示するサンプルを作ってみます。

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

#import <EventKit/EventKit.h>

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

ViewControllerに書いてみました。

– (void)viewDidLoad

{

    [super viewDidLoad];

    

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

    

    for (int i = 0; i < [eventStore.calendars count]; i++) {

        // カレンダー取得

        EKCalendar *calender = [eventStore.calendars objectAtIndex:i];

        

        

        /* 参考: カレンダー Type

        typedef enum {

            EKCalendarTypeLocal,

            EKCalendarTypeCalDAV,

            EKCalendarTypeExchange,

            EKCalendarTypeSubscription,

            EKCalendarTypeBirthday,

        } EKCalendarType;

        */

        

        // カレンダー情報のログ出力

        NSLog(@”\n Title:%@ \n Type:%d \n Color:%@ \n allows modifications:%d”

              , calender.title

              , calender.type

              , [UIColor colorWithCGColor:calender.CGColor]

              , [calender allowsContentModifications]);

    }

    

}

実行すると、こんな感じでカレンダーが取得できます。

2012-10-15 09:13:25.935 

 Title:Birthdays 

 Type:4 

 Color:UIDeviceRGBColorSpace 0.509804 0.584314 0.686275 1 

 allows modifications:0

2012-10-15 09:13:25.953 

 Title:Calendar 

 Type:0 

 Color:UIDeviceRGBColorSpace 0.054902 0.380392 0.72549 1 

 allows modifications:1

2012-10-15 09:13:25.958 

 Title:職場 

 Type:1 

 Color:UIDeviceRGBColorSpace 0.964706 0.309804 0 1 

 allows modifications:1

2012-10-15 09:13:25.961 

 Title:自宅 

 Type:1 

 Color:UIDeviceRGBColorSpace 0.443137 0.101961 0.462745 1 

 allows modifications:1