【问题标题】:How to use the correct fetchedResultsController when using more than one使用多个时如何使用正确的fetchedResultsController
【发布时间】:2013-09-13 00:59:44
【问题描述】:

我有一个UIViewController 和两个UITableViews。这两个表是从不同的实体填充的,所以我使用了两个获取的结果控制器。在使用 UITableViewDelegate/Datasource 方法时,我如何指定使用哪个fetchedResultsController

How to filter NSFetchedResultsController (CoreData) with UISearchDisplayController/UISearchBar

上面的链接基本上介绍了如何实现两个 FRC,但我很新,我不确定他下面的方法是如何工作的。

- (NSFetchedResultsController *)fetchedResultsControllerForTableView:(UITableView *)tableView
{
    return tableView == self.tableView ? self.fetchedResultsController : self.searchFetchedResultsController;
}

谁能帮我把这个拼出来?特别是return tableView == .... 行。 提前致谢!

【问题讨论】:

    标签: ios uitableview core-data nsfetchedresultscontroller


    【解决方案1】:

    这里有两件事你可能需要了解。

    首先,该语句包含一个三元运算符('?')。三元运算符是为了方便编程,那一行完全一样:

    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 传递给函数。好吧,section的数量是基于fetchedResultsController中的信息,但是我们使用哪个fetchedResultsController呢?辅助函数获取表(最初传递给 numberOfSectionsInTableView 函数)并确定要使用哪个 fetchedResultsController。然后我们用它来回答“有多少部分?”的问题

    【讨论】:

    • 正是我正在寻找的解释!我从来没见过?用作运算符,所以我无法破译语法。谢谢约翰尼 Z!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2019-02-11
    • 1970-01-01
    • 2012-02-29
    • 2013-11-11
    • 2013-12-26
    相关资源
    最近更新 更多