fetchedResultsController

fetchedResultsController

我有一个分为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/

  • 10-10 18:32