Como obter todos os eventos de um calendário (Swift)

Eu sou meio novo na Swift, mas realmente interessado. Gostaria de obter todos os eventos armazenados em um calendário chamado "Trabalho" e mostrá-los em um tableView. Eu estava procurando por perguntas como essa, mas o código mostrado lá parece meio antigo e realmente não está funcionando. Como faço isso? O tableView deve poder mostrar o título, a data inicial e final. É possível obter todos os títulos em uma matriz de seqüências de caracteres. Mesmo com o começo e o fim? Seria incrível para obter algumas dicas!

Atualização: declarei as variáveis fora da classe. Agora eu tentei um código parecido com este, graças a uma resposta que cheguei aqui, mas não consigo que as células exibam nada ?! E sim, eu já criei um testEvent no meu calendário de trabalho no simulador.

    override func viewDidAppear(animated: Bool) {

    let eventStore = EKEventStore()

    switch EKEventStore.authorizationStatusForEntityType(.Event) {
    case .Authorized:
        readEvents()
    case .Denied:
        print("Access denied")
    case .NotDetermined:

        eventStore.requestAccessToEntityType(.Event, completion: { (granted: Bool, NSError) -> Void in
            if granted {
                self.readEvents()

            }else{
                print("Access denied")
            }



        })
    default:
        print("Case Default")
    }
    self.tableView.reloadData()
}



func readEvents() {



    let eventStore = EKEventStore()
    let calendars = eventStore.calendarsForEntityType(.Event)

    for calendar in calendars {
        if calendar.source.title == "Work" {
            let oneMonthAgo = NSDate(timeIntervalSinceNow: -30*24*3600)
            let oneMonthAfter = NSDate(timeIntervalSinceNow: +30*24*3600)


            let predicate = eventStore.predicateForEventsWithStartDate(oneMonthAgo, endDate: oneMonthAfter, calendars: [calendar])

            var events = eventStore.eventsMatchingPredicate(predicate)

            for event in events {

                titles.append(event.title)
                startDates.append(event.startDate)
                endDates.append(event.endDate)


            }

        }
    }


}

// MARK: - Table view data source



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return titles.count
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)


    cell.textLabel!.text = titles[indexPath.row]
    cell.detailTextLabel!.text = "From: \(startDates[indexPath.row]) Until: \(endDates[indexPath.row])"
    // Configure the cell...

    return cell
}

questionAnswers(3)

yourAnswerToTheQuestion