我有两个UIViewController
的{{1}}。这两个表是从不同的实体填充的,所以我使用了两个获取的结果控制器。在使用UITableViewDelegate / Datasource方法时,如何指定使用哪个UITableViews
?
How to filter NSFetchedResultsController (CoreData) with UISearchDisplayController/UISearchBar
上面的链接基本上是介绍了如何实现两个FRC,但我已经足够新了以至于我不确定他的方法如何工作。
fetchedResultsController
有人可以为我拼写这个吗?特别是- (NSFetchedResultsController *)fetchedResultsControllerForTableView:(UITableView *)tableView
{
return tableView == self.tableView ? self.fetchedResultsController : self.searchFetchedResultsController;
}
行。
提前致谢!
答案 0 :(得分:2)
您可能需要了解两件事。
首先,该声明包括一个三元运算符('?')。三元运算符用于方便编程,并且一行与以下内容完全相同:
if(tableView == self.tableView){
return self.fetchedResultsController;
} else {
return self.searchFetchedResultsController;
}
第二件事是理解回调。您在UIViewController中控制两个tableView,它们各自使用自己的NSFetchedResultsController。当系统调用fetchedResultsControllerForTableView回调时,您必须为给定的表返回正确的fetchedResultsController。
所以fetchedResultsControllerForTablView函数通常看起来像这样:
- (NSFetchedResultsController *)fetchedResultsControllerForTableView:(UITableView *)tableView
{
if(tableView == self.tableView1){
return self.fetchedResultsController1;
} else if (tableView == self.tableView2){
return self.fetchedResultsController2;
} else if ...
表示n个表。
编辑: 系统不会调用此函数,但它是在用户类中调用的辅助方法。 (我只是重新阅读了问题中的链接)。但这个想法基本上是一样的。
让我们以numberOfSectionsInTableView函数为例。这是由iOS系统调用的,因此它知道要放入tableView中的部分。系统将有问题的TableView传递给函数。那么,部分的数量是基于fetchedResultsController中的信息,但是我们使用了哪个fetchedResultsController?辅助函数获取表(原始传递给numberOfSectionsInTableView函数)并确定要使用的fetchedResultsController。然后我们用它来回答问题"有多少部分?"