2011年12月27日火曜日

iOS5のEventKitまわり変更点


iOS5からカレンダーのフレームワークであるEventKitまわりに若干変更点があったので備忘録にメモ。



EKSourceが追加された
EventKitにEKSourceというクラスが追加になった。
従来のEventKitでは、カレンダーを表すEKCalendarクラスにtypeという列挙型のプロパティがあり、これがカレンダーの種別を表していた。
typedef enum {
     EKCalendarTypeLocal,
     EKCalendarTypeCalDAV,
     EKCalendarTypeExchange,
     EKCalendarTypeSubscription,
     EKCalendarTypeBirthday,
} EKCalendarType;
カレンダーの種別は例えば、iPhoneローカル、CalDAV連携、Exchange連携、アドレス帳の誕生日、といったもの。

iOS5からはiCloudが登場するので、てっきりこのEKCalendarTypeに一つ追加になるのかと思っていたら、iCloudのカレンダーはEKCalendarTypeCalDAVになっていて、CalDAVと見分けが付かない仕様に。

では、どうやってCalDAVとiCloudのカレンダーを判別するのか、調べていたらEKSourceというクラスが追加になっていた。
EKEvent.recurrenceRuleが廃止
予定を表すクラスEKEventのrecurrenceRuleプロパティがdeprecateになっていた。これはEKRecurrenceクラスのプロパティで繰り返しのルールを保持しているもの。

このプロパティがdeprecateになり(iOS5ではまだ利用可能)、代わりにNSArrayのrecurrenceRulesというプロパティが追加になっていた。

つまり、EKEventに対して複数のパターンの繰り返しルールを設定できる構造になったのだけど、そんなデータを作る事が出来るカレンダーアプリを今のところお目にかかった事が無い。

こんなとこかなー。