使用 EventKit 添加事件和日历
Adding events and calendars with EventKit
我需要向用户日历添加一个事件。
所以我得到了他所有的日历:
let calendars = store.calendarsForEntityType(EKEntityTypeEvent)
as [EKCalendar]
我有几个问题:
- 我怎么知道要将活动添加到哪个日历
- 我可以向用户显示他所有的日历并让他选择,但是在这个列表中我得到 [calendar, calendar, birthdays, birthdays]
每个日历我都有两次,所以我拿哪一个?
- 有没有办法为添加事件添加新的日历?
谢谢
为了创建一个新日历,您应该创建它并将 id 存储在 NSUserDefaults 中,以便下次检索它。我使用以下函数获取日历(如果存在)并创建它(如果不存在):
func getCalendar() -> EKCalendar? {
let defaults = NSUserDefaults.standardUserDefaults()
if let id = defaults.stringForKey("calendarID") {
return store.calendarWithIdentifier(id)
} else {
var calendar = EKCalendar(forEntityType: EKEntityTypeEvent, eventStore: self.store)
calendar.title = "My New Calendar"
calendar.CGColor = UIColor.redColor()
calendar.source = self.store.defaultCalendarForNewEvents.source
var error: NSError?
self.store.saveCalendar(calendar, commit: true, error: &error)
if error == nil {
defaults.setObject(calendar.calendarIdentifier, forKey: "calendarID")
}
return calendar
}
}
现在您在创建新活动时使用此日历,以便您可以将活动添加到此日历:
func addEvent() {
var newEvent = EKEvent(eventStore: self.store)
newEvent.title = someTitle
newEvent.location = someLocation
newEvent.startDate = someStartDate
newEvent.endDate = someEndDate
newEvent.notes = someMoreInfo
newEvent.calendar = getCalendar()
self.store.saveEvent(newEvent, span: EKSpanThisEvent, commit: true, error: nil)
}
我需要向用户日历添加一个事件。
所以我得到了他所有的日历:
let calendars = store.calendarsForEntityType(EKEntityTypeEvent)
as [EKCalendar]
我有几个问题:
- 我怎么知道要将活动添加到哪个日历
- 我可以向用户显示他所有的日历并让他选择,但是在这个列表中我得到 [calendar, calendar, birthdays, birthdays] 每个日历我都有两次,所以我拿哪一个?
- 有没有办法为添加事件添加新的日历?
谢谢
为了创建一个新日历,您应该创建它并将 id 存储在 NSUserDefaults 中,以便下次检索它。我使用以下函数获取日历(如果存在)并创建它(如果不存在):
func getCalendar() -> EKCalendar? {
let defaults = NSUserDefaults.standardUserDefaults()
if let id = defaults.stringForKey("calendarID") {
return store.calendarWithIdentifier(id)
} else {
var calendar = EKCalendar(forEntityType: EKEntityTypeEvent, eventStore: self.store)
calendar.title = "My New Calendar"
calendar.CGColor = UIColor.redColor()
calendar.source = self.store.defaultCalendarForNewEvents.source
var error: NSError?
self.store.saveCalendar(calendar, commit: true, error: &error)
if error == nil {
defaults.setObject(calendar.calendarIdentifier, forKey: "calendarID")
}
return calendar
}
}
现在您在创建新活动时使用此日历,以便您可以将活动添加到此日历:
func addEvent() {
var newEvent = EKEvent(eventStore: self.store)
newEvent.title = someTitle
newEvent.location = someLocation
newEvent.startDate = someStartDate
newEvent.endDate = someEndDate
newEvent.notes = someMoreInfo
newEvent.calendar = getCalendar()
self.store.saveEvent(newEvent, span: EKSpanThisEvent, commit: true, error: nil)
}