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 じゃなくていいらしい)