六、观察Calendar Database的外部变化

来源:互联网 发布:一战是怎么回事知乎 编辑:程序博客网 时间:2024/04/30 14:56

简介

由于其他程序可以在你运行app时修改Calendar Database的值,所以如果你的app获取了日历事件或提醒,你应该同时注册关于Calendar Database的通知。这样,你可以保证展示给用户的信息是最新的。

注册Notifications

当Calendar Database有任何变化时,EKEventStore 都会post一个 EKEventStoreChangedNotification消息。注册消息代码如下:

[[NSNotificationCenter defaultCenter] addObserver:self            selector:@selector(storeChanged:)                                                         name:EKEventStoreChangedNotification            object:eventStore];

Notifications的接收处理

当我们收到EKEventStoreChangedNotification这个通知时,表示我们获取到的数据可能发生了改变,这些改变可能是添加、修改或删除,会影响到我们对用户的展示。

  • 如果为添加,那么他不会影响到之前获取到的事件,但是我们应该把新添加的事件和之前获取到的事件作为一个整体来展示给用户一个最新的信息。
  • 如果一个事件为修改或删除,那么我们展示给用户的关于当前事件的信息有可能是无效的,或者说不是最新的。
    因为当Calendar Database发生改变时,你的本地数据经常是无效的,或者说未完成的,所以当收到EKEventStoreChangedNotification消息时应该重新获取事件信息。但如果你收到EKEventStoreChangedNotification消息时正在修改一个事件,你并不想在没有必要的情况下就重新获取事件,那么此时你可以对该事件调用refresh方法,如果返回YES,你可以继续当前的修改操作;如果返回NO,你必须要重新获取事件。
注意:当事件发生变化时,Event Kit UI会自动更新,下章会有详细介绍
0 0
原创粉丝点击