个NSFetchedResultController

个NSFetchedResultController

我想做的很简单。在我的UITableViewController中,我想从多个NSFetchedResultControllers(我的数据模型中有多个实体)加载数据,并将每个数据放入表 View 的不同部分。因此,例如,从第一个NSFetchedResultController获取的所有项目将进入UITableView的第0部分,从另一个获取的项目进入第1部分,依此类推。

Core Data模板项目未演示如何执行此操作。所有内容(主要是索引路径)的编码都没有考虑到部分(默认模板中没有任何部分),并且所有内容都来自单个NSFetchedResultController。是否有任何示例项目或文档演示了此操作?

谢谢

最佳答案

假设您的 header 中有以下内容(抱歉,下面的代码会有点草率):

NSFetchedResultsController *fetchedResultsController1; // first section data
NSFetchedResultsController *fetchedResultsController2; // second section data

让表格知道您想要包含两个部分:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2; // you wanted 2 sections
}

给它标题部分:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return [NSArray arrayWithObjects:@"First section title", @"Second section title", nil];
}

让表格知道每节有多少行:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == 0) {
        return [[fetchedResultsController1 fetchedObjects] count];
    } else if (section == 1) {
        return [[fetchedResultsController2 fetchedObjects] count];
    }

    return 0;
}

构建单元:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ... // table cell dequeue or creation, boilerplate stuff

    // customize the cell
    if (indexPath.section == 0) {
        // get the managed object from fetchedResultsController1
        // customize the cell based on the data
    } else if (indexPath.section == 1) {
        // get the managed object from fetchedResultsController2
        // customize the cell based on the data
    }

    return cell;
}

关于iphone - 核心数据:具有多个NSFetchedResultControllers的UITableView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2308487/

10-13 02:46