CalendarStoreを使う-1「基本:イベント取得」
とりあえず、既存のカレンダーデータへアクセスしてみましょう。
基本的には CalCalendarStore を使うところからはじまります。例えば、カレンダーの一覧を得るにはこういう感じで。
NSArray* calendars = [[CalCalendarStore defaultCalendarStore] calendars];
さて、この枠組みが CoreData ヘのラッピングフレームワークであると考えると当然ですが、NSPredicate を使うと、自由自在にイベントやタスク(ToDo)を取り出すことが出来ます。イベントの検索方法としてはいろいろあるかと思いますが、用意されているのは「期間」の指定。「期間」を指定する NSPredicate インスタンスを簡単に生成できるようになってます。
+(NSPredicate*) eventPredicateWithStartDate:(NSDate*)startDate
endDate:(NSDate*)endDate
calendars:(NSArray*)calendars
これらの組み合わせで、ある日 dateA から dateB までに含まれるすべてのイベントを簡単に取得できます。(これが、以前は結構大変だったんですけれどね・・・)
CalCalendarStore* store = [CalCalendarStore defaultCalendarStore];
NSArray* calendars = [store calendars];
NSPredicate* predicate = [CalCalendarStore
eventPredicateWithStartDate:dateA
endDate:dateB
calendars:calendars];
NSArray* events = [store eventsWithPredicate:predicate];