我想做的很简单。在我的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/