デフォルトの EKSource について
EKSource
上記コードでカレンダーへのプライバシーアクセスとリマインダーへのプライバシーアクセスを表示して全ての EKSource
の配列を取得できる。
このソースは iCloud や CalDav を設定する事で増減するが、デフォルトでは2つのソースが用意されている。
1つは title
が Default
、sourceType
が EKSourceTypeLocal
でiPhoneの端末ローカルで管理されるデータベースのソースになる。
もう1つは title
が Other
で sourceType
はヘッダに定義されていない 5 の定数が与えられている。
この Other の EKSource
オブジェクトをログ出力すると
type = Other; title = Other;
と表示されるので、公開ヘッダに定義されている
typedef enum { EKSourceTypeLocal, EKSourceTypeExchange, EKSourceTypeCalDAV, EKSourceTypeMobileMe, EKSourceTypeSubscribed, EKSourceTypeBirthdays } EKSourceType;
この定数に加えておそらく内部では
EKSourceTypeOther
が追加されていると考えられる。
まとめるとデフォルトのソースは以下になる。
title | sourceType | EKSourceTypeの値 | 備考 |
---|---|---|---|
Default | EKSourceTypeLocal | 0 | |
Other | EKSourceTypeOther | 5 | Private |
Local EKSource
Local のソースは EKEvent
扱う場合のデフォルトのソースとなっていて、EKReminder
を扱う場合のデフォルトのソースにもなっている。
ただし、
[localSource calendarsForEntityType:EKEntityTypeEvent];
で取得できる EKEvent
用の EKCalendar
と
[localSource calendarsForEntityType:EKEntityTypeReminder];
で取得できる EKReminder
用の EKCalendar
は別々のカレンダーが割り当てられている。
Other EKSource
Other のソースは EKEvent
用のソースで、誕生日用の EKCalendar
が入っている。
誕生日のカレンダーの type
プロパティは EKCalendarTypeBirthday
で allowsModify
が NO となっている。
このカレンダーの性質上、おそらく AddressBook.framework の内部で使われている専用のカレンダーで EventKit.framework からはアクセスできないようになっていると思われる。
注意事項
Private な定数 EKSourceTypeOther
の EKSource
はリマインダーのみを扱う場合には関係無いので、リマインダーアプリでソース一覧を表示する必要がある場合には標準のリマインダー.appのUIに習ってこのソースをリストから除外して表示すると良い。