gpt4 book ai didi

ios - 使用 fetchedResultsController 对 UITableView 进行分组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:31 25 4
gpt4 key购买 nike

我有一个包含 1 个部分的分组 tableView,单元格的内容由 fetchedResultsController 提供。现在我需要稍微修改一下这个tableview。我需要添加一个 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 可以很好地检索到数据,而且它不是空的,那么这里有什么问题吗?

最佳答案

原因是 TableView 中的第 #1 部分是第 #0 部分获取结果 Controller 。所以你必须调整 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 中,
  • 在获取的结果 Controller 委托(delegate)方法中

在FRC索引路径和它对应的 TableView 索引路径之间进行映射。

我会把你的第一个方法写成

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1 + [[self.fetchedResultsController sections] count];
}

即使 FRC 没有部分或超过 1 个部分,它也能正常工作。

关于ios - 使用 fetchedResultsController 对 UITableView 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18308765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com