日历和提醒程序指导
目录
日历和提醒说明
1.概括
2.see also
读写日历事件
1.连接到事件库
2.取得事件
a.用 Predicates
b.用 唯一标识符,Unique Identifiers;
3.创建和编辑事件
4.保存和删除事件
5.执行一组操作。
日历和提醒说明
Event Kit framework 提供访问用户的Calendar.app和Reminders.app信息的方法。
虽然日历和提醒显示为两个不同的应用程序,但他们的操纵数据的框架是相同的。
同样的,日历和提醒的信息存储在一个叫做“日历数据库”的数据库里。
Event Kit framework不仅允许你的程序获取用户的已经存在的在日历和提醒里的数据,
还可以让你创建新的事件或提醒为他们的任一个日历。
还有 Event Kit framework让你可以编辑和删除事件和提醒。通称为 “calendar items”。
更多的操作,像添加报警或者指定重复事件,也可以完成;
如果在你的程序外部,日历数据库被改变了,Event Kit也能通知你的程序检查这个更改。
日历事件的更改模式是自动同步到相关的日历的;
tips:
这个文档描述了Event Kit的概念和大体流程。
如果你想在你的程序内部显示或者编辑日历或提醒事件的话,你应该阅读这篇文章。
Event Kit提供了对用户的日历数据库操作的方法是有限的;
例如,不包含日历或提醒的全部功能,比如添加出席者和帐号。
概览
怎样把用户的日历和提醒数据整合到你的程序中?
第一部分
读写日历事件
你可以通过EKEventStore Class从用户的日历数据库里拉取、创建、编辑、删除事件。
你可以通过你提供的predicate拉取你自定义的事件集合(意思是你可以指定拉取事件的条件范围等)。
或者你可以通过某一事件的唯一标识符拉取它。
拉取到一个事件后,
你可以可以访问它的与的EKEvent类的属性的相关联的日历信息。
同样的,你可以修改它的日历信息的属性设置的EKEvent类
1.连接到日历数据库
在iOS 5.0及以后,应该用缺省的初始化方法
EKEventStore *store = [[EKEventStore alloc] init];
在iOS6.0及以后,写在初始化EKEventStore之后。你必须发起请求询问用户是否允许访问日历数据库数据。
提示用户允许或拒绝您的应用程序使用他们的日历信息,应该是异步请求访问。???是请求本身是异步还是自己应该写异步请求???
在你的应用程序里应该处理用户授予和拒绝访问的情况。
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted,
NSError *error) {
// handle access here
}];
一个EventStore对象的初始化和释放是需要很长时间的,所以说不应该在每一次对其进行操作时进行初始化和释放,
正确的做法是,在你的应用程序里只初始化一个实例,然后反复使用,以确保你的连接是长期有效的。
一个EventStore对象必须在之后释放,不然的话可能会发生不确定的事情。
第二部分
获取事件
有两个方法来获取事件。
通过Predicates,或者通过搜索询问
通过唯一标识符来拉取事件,将得到与之对应的事件
tips:从数据库里拉取的数据不一定是按照时间先后顺序排列好的。
你应该把事件对象进行排序,通过调用
sortedArrayUsingSelector:
compareStartDateWithEvent:提供了方法
通过使用predicates来拉取事件
一般是拉取一个时间范围内的事件。
EKEventStore的eventsMachingPredicate:将拉取你指定的时间范围内的所有事件。
The Event Kit framework grants access to users’ Calendar.app and Reminders.app information. Although two different apps display users’ calendar and reminder data, the same framework manipulates the data. Similarly, the database that stores this data, called the Calendar database, holds both calendar and reminder information.
EKEventStore
An instance of the EKEventStore class represents the Calendar database. It is an application’s point of contact for accessing calendar and reminder data.