通过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()
}
}
|