在OSX上使用带有swift的EventKit

时间:2015-04-02 12:04:12

标签: xcode macos swift

我试图通过swift获取本周来自iCal的所有活动的列表。 我想看看有多少事件以及它们属于哪些类别。 如何以编程方式完成此操作。 Eventkit是正确的选择还是应该使用AppleScript?是否有使用swift的Eventkit教程?我找不到一个。

1 个答案:

答案 0 :(得分:5)

我使用以下单身人士访问EventStore

private let _SingletonSharedInstance = EventStore()

class EventStore {
  let eventStore = EKEventStore ()

  class var sharedInstance : EventStore {
    return _SingletonSharedInstance
  }

  init() {
    var sema = dispatch_semaphore_create(0)
    var hasAccess = false

    eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { (granted:Bool, error:NSError?) in hasAccess = granted; dispatch_semaphore_signal(sema) })

    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER)
    if (!hasAccess) {
      alert ("ACCESS", "ACCESS LONG")
      let sharedWorkspace = NSWorkspace.sharedWorkspace()
      sharedWorkspace.openFile("/Applications/System Preferences.app")
      exit (0)
    }
  }
}

注意alert是我创建警报的私有方法之一。根据需要更换它。

要在我的应用中访问eventstore,我使用

let eventStore = EventStore.sharedInstance.eventStore
...
for et in eventStore.calendarsForEntityType(EKEntityTypeEvent) {
   // check calendars
}

关于当时事件存储的文档很完整,所以你可以从这里开始。