通过EventKit可以对iOS日历事件进行读取,添加等操作。但网上找到的都是使用Objective-C来编写的。
下面提供一个Swift版的样例,演示如何添加一个事件以及获取所有的事件列表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import UIKit import EventKit class ViewController : UIViewController { override func viewDidLoad()
{ super .viewDidLoad() let eventStore: EKEventStore = EKEventStore () //
'EKEntityType.Reminder' or 'EKEntityType.Event' eventStore.requestAccessToEntityType(. Event ,
completion: { granted,
error in if (granted)
&& (error == nil )
{ print ( "granted
\(granted)" ) print ( "error
\(error)" ) //
新建一个事件 let event: EKEvent = EKEvent (eventStore:
eventStore) event.title
= "新增一个测试事件" event.startDate
= NSDate () event.endDate
= NSDate () event.notes
= "这个是备注" event.calendar
= eventStore.defaultCalendarForNewEvents do{ try
eventStore.saveEvent(event, span: . ThisEvent ) print ( "Saved
Event" ) }catch{} //
获取所有的事件(前后90天) let startDate= NSDate ().dateByAddingTimeInterval(-3600*24*90) let endDate= NSDate ().dateByAddingTimeInterval(3600*24*90) let predicate2
= eventStore.predicateForEventsWithStartDate(startDate, endDate:
endDate, calendars: nil ) print ( "查询范围
开始:\(startDate) 结束:\(endDate)" ) let eV
= eventStore.eventsMatchingPredicate(predicate2) as [ EKEvent ]! if eV
!= nil { for i in eV
{ print ( "标题
\(i.title)" ) print ( "开始时间:
\(i.startDate)" ) print ( "结束时间:
\(i.endDate)" ) } } } }) } override func didReceiveMemoryWarning()
{ super .didReceiveMemoryWarning() } } |