itok's Lab

昔の開発ネタを記録として残してます

CalendarStoreを使う-4「データ変更を通知する」

iCalのデータっていうのは当然のことながら、同時にいろんなアプリケーションからアクセスされます。なので、データを変更した場合にはそれを他のアプリケーションに通知しなければなりませんし、また他のアプリが変更した場合もその通知を受けとる必要が出てくることでしょう。

自アプリが行った変更を他アプリへ通知する

通知名 object userInfo
CalCalendars
ChangedNotification
CalCalendarStore
オブジェクト
CalSenderProcessIDKey
自アプリのプロセスID
CalUserUIDKey
ユーザID
CalInsertedRecordsKey *
追加されたカレンダーのUID配列
CalUpdatedRecordsKey *
更新されたカレンダーのUID配列
CalDeletedRecordsKey *
削除されたカレンダーのUID配列
* 上記3つのうち最低でも1つを含む
CalEvents
ChangedNotification
CalCalendarStore
オブジェクト
CalSenderProcessIDKey
自アプリのプロセスID
CalUserUIDKey
ユーザID
CalInsertedRecordsKey *
追加されたイベントのUID配列
CalUpdatedRecordsKey *
更新されたイベントのUID配列
CalDeletedRecordsKey *
削除されたイベントのUID配列
* 上記3つのうち最低でも1つを含む
CalTasks
ChangedNotification
CalCalendarStore
オブジェクト
CalSenderProcessIDKey
自アプリのプロセスID
CalUserUIDKey
ユーザID
CalInsertedRecordsKey *
追加されたタスクのUID配列
CalUpdatedRecordsKey *
更新されたタスクのUID配列
CalDeletedRecordsKey *
削除されたタスクのUID配列
* 上記3つのうち最低でも1つを含む

他アプリが行った変更通知を自アプリで受けとる

通知名 object userInfo
CalCalendarsChanged
ExternallyNotification
CalCalendarStore
オブジェクト
CalSenderProcessIDKey
他アプリのプロセスID
CalUserUIDKey
ユーザID
CalInsertedRecordsKey *
追加されたカレンダーのUID配列
CalUpdatedRecordsKey *
更新されたカレンダーのUID配列
CalDeletedRecordsKey *
削除されたカレンダーのUID配列
* 上記3つのうち最低でも1つを含む
CalEventsChanged
ExternallyNotification
CalCalendarStore
オブジェクト
CalSenderProcessIDKey
他アプリのプロセスID
CalUserUIDKey
ユーザID
CalInsertedRecordsKey *
追加されたイベントのUID配列
CalUpdatedRecordsKey *
更新されたイベントのUID配列
CalDeletedRecordsKey *
削除されたイベントのUID配列
* 上記3つのうち最低でも1つを含む
CalTasksChanged
ExternallyNotification
CalCalendarStore
オブジェクト
CalSenderProcessIDKey
他アプリのプロセスID
CalUserUIDKey
ユーザID
CalInsertedRecordsKey *
追加されたタスクのUID配列
CalUpdatedRecordsKey *
更新されたタスクのUID配列
CalDeletedRecordsKey *
削除されたタスクのUID配列
* 上記3つのうち最低でも1つを含む

これらは NSNotificationCenter 経由でやり取りされるようです。(NSDistributedNotificationCenter じゃなくていいらしい)