我有一个分为1节的tableView
分组,单元格的内容由fetchedResultsController
提供。现在,我需要对此表视图进行一些修改。我需要添加一个UITableviewCell及其自己的自定义内容(独立于fetchedResultsController
),仅作为第一部分的单个内容。第二部分必须与此tableView
的先前版本相同。因此,只需在所有现有内容之前的一个部分中添加一个单元格即可。相关方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// return [[self.fetchedResultsController sections]count];
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0)
{
return 1;
}
else
{
id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [secInfo numberOfObjects];
}
}
但是我这里有
SIGABRT
和-[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
。 fetchedResultsController
可以很好地检索数据,并且它不是空的,所以这里出什么问题了? 最佳答案
原因是表格视图中的#1部分是
获取结果控制器。
因此,您必须在numberOfRowsInSection
中调整节号:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0) {
return 1;
} else {
NSInteger frcSection = section - 1;
id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections] objectAtIndex:frcSection];
return [secInfo numberOfObjects];
}
}
请注意,必须进行类似的调整
cellForRowAtIndexPath
中的在FRC索引路径及其对应的表视图索引路径之间进行映射。
我会写你的第一个方法为
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1 + [[self.fetchedResultsController sections] count];
}
因此即使FRC没有节或不超过1节,它也可以工作。
关于ios - 将UITableView与fetchedResultsController分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18308765/