cellForRowAtIndexPath nunca llamó a UITableViewController

cellForRowAtIndexPath nunca se llama (numberOfRowsInSection) utilizando UITableViewController de la siguiente manera:

import UIKit import EventKit class EventThisWeekController: UITableViewController { var eventStore: EKEventStore = EKEventStore() var eventsThisWeek: [EKEvent] = [] override func viewDidLoad() { super.viewDidLoad() self.eventStore.requestAccessToEntityType(.Event) { (granted, error) -> Void in guard granted else { fatalError("Permission denied") } let endDate = NSDate(timeIntervalSinceNow: 604800) let pnetworkingicate = self.eventStore.pnetworkingicateForEventsWithStartDate(NSDate(), endDate: endDate, calendars: nil) self.eventsThisWeek = self.eventStore.eventsMatchingPnetworkingicate(pnetworkingicate) print(self.eventsThisWeek.count) } } override func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { print("cellForRowAtIndexPath") let cell = UITableViewCell(style: .Default, reuseIdentifier: nil) cell.textLabel?.text = self.eventsThisWeek[indexPath.row].title return cell } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { print("numberOfRowsInSection") return eventsThisWeek.count } } 

La fuente de datos y el delegado se asignan a este controller y EvenThisWeekController es una class diseñada en el guión gráfico principal. Como resultado, en la tabla de mi aplicación se muestra sin ningún resultado. Por supuesto, la longitud de array eventWeek no es igual a 0. ¿Alguna idea de cómo puedo resolverlo?

Reemplace su código en viewDidLoad con esto.

 self.eventStore.requestAccessToEntityType(.Event) { (granted, error) -> Void in guard granted else { fatalError("Permission denied") } let endDate = NSDate(timeIntervalSinceNow: 604800) let pnetworkingicate = self.eventStore.pnetworkingicateForEventsWithStartDate(NSDate(), endDate: endDate, calendars: nil) self.eventsThisWeek = self.eventStore.eventsMatchingPnetworkingicate(pnetworkingicate) dispatch_async(dispatch_get_main_queue(),{ self.tableView.reloadData() }) print(self.eventsThisWeek.count) } 

Su cellForRowAtIndexPath no llama porque cuando su vista se carga en ese momento, la matriz estaba vacía y cuando el self.eventStore.requestAccessToEntityType se ejecuta completamente y la matriz de carga con un nuevo valor no estaba notificando a su tableView para volver a cargar los datos, ya que tiene nuevo valores en su matriz.