在我的应用程序中,我使用 Core Data 以及 NSFetchedResultsController。我需要使用 1 个表视图行来显示 9 条记录而不是 1 条记录。所以我自定义numberOfRowsInSection
方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [self numberOfRowsForNumber: [sectionInfo numberOfObjects]];
}
- (NSInteger)numberOfRowsForNumber:(NSInteger)num
{
NSInteger a = num / 9;
NSInteger b = num % 9;
return a + (b == 0 ? 0 : 1);
}
添加第一条记录就可以了。但是当我添加第二条记录时,出现错误:
-[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2903.23/UITableView.m:1330 2013-11-13 06:54:56.217 TestNSFetchedResultsController[2693:a0b] CoreData 中的断言失败:错误:严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了一个异常。无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (1) 必须等于更新前该节中包含的行数 (1),加上或减去数字从该部分插入或删除的行数(1 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。与用户信息(空)
这是否意味着 NSFetchedResultsController 仅支持 1 条记录到 1 行的映射?还是有更好的方法来完成它?