通过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
|
import UIKit
import EventKit
class ViewController : UIViewController {
override func viewDidLoad() {
super .viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var eventStore: EKEventStore = EKEventStore ()
// 'EKEntityTypeReminder' or 'EKEntityTypeEvent'
eventStore.requestAccessToEntityType( EKEntityTypeEvent , completion: {
granted, error in
if (granted) && (error == nil ) {
println ( "granted \(granted)" )
println ( "error \(error)" )
// 新建一个事件
var event: EKEvent = EKEvent (eventStore: eventStore)
event.title = "新增一个测试事件"
event.startDate = NSDate ()
event.endDate = NSDate ()
event.notes = "这个是备注"
event.calendar = eventStore.defaultCalendarForNewEvents
eventStore.saveEvent(event, span: EKSpanThisEvent , error: nil )
println ( "Saved Event" )
// 获取所有的事件(前后90天)
var startDate= NSDate ().dateByAddingTimeInterval(-3600*24*90)
var endDate= NSDate ().dateByAddingTimeInterval(3600*24*90)
var predicate2 = eventStore.predicateForEventsWithStartDate(startDate,
endDate: endDate, calendars: nil )
println ( "查询范围 开始:\(startDate) 结束:\(endDate)" )
var eV = eventStore.eventsMatchingPredicate(predicate2) as [ EKEvent ]!
if eV != nil {
for i in eV {
println ( "标题 \(i.title)" )
println ( "开始时间: \(i.startDate)" )
println ( "结束时间: \(i.endDate)" )
}
}
}
})
}
override func didReceiveMemoryWarning() {
super .didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
} |