我在屏幕上有分段控件。 1个分段项目用于广告(广告表格),第2个分段项目用于订单(订单表格)。
每当用户选择分段项时,我重新创建NSFetchResultController的实例,并向另一个数据表添加新的获取请求(但在UI上我总是只有一个UITableView self.tableViewMain
):
let entityName = screen == ProfileScreen.Ads ? kDB_entity_DBAd : kDB_entity_DBOrder
let entityDescription = NSEntityDescription.entityForName(entityName, inManagedObjectContext: (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext)
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entityDescription
self.fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: (UIApplication.sharedApplication().delegate! as! AppDelegate).managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
do {
try fetchedResultsController!.performFetch()
} catch {
print("An error occurred in fetchresultcontroller")
}
但是第一次正确地重新加载数据,但是第二次fetchresultcontroller甚至没有重新加载表(numberOfRowsInSection and cellForRowAtIndexPath
没有被调用)。所以当我调用fetchedResultsController!.performFetch()
答案 0 :(得分:1)
您应该调用tableViewMain.reloadData()
让表重新加载。