Objective c 处理大小可变的UITableView单元格并高效检索关联数据的最有效方法
大家好,我真的非常感谢大家的帮助-我的目标是高效的w.r.t数据获取和内存使用 我有一个核心数据存储,存储内容项表(tocEntity):文章标题、页码。一个页面可以有多篇文章,页码可以存在也可以不存在,即如果您有一篇从第3页开始的5页文章,则第4-7页不会有任何t.o.c.条目 当我在表格视图中显示上述内容时,每个单元格都会显示一个页面的所有文章名称,因此一些单元格将有一个单独的文章名称,而其他单元格可能有10个(或更多) 将单元格布置得很好没有问题,但我感兴趣的是仅针对表视图当前需要的内容高效地获取数据(NSFetchedResultsController的工作方式)-问题是,每个单元格没有一个核心数据条目,而是数量不同。因此,如果NSFETvhederResultsController会说(给我12-17单元的数据)-这不会导致单核心数据检索Objective c 处理大小可变的UITableView单元格并高效检索关联数据的最有效方法,objective-c,uitableview,core-data,nsfetchedresultscontroller,Objective C,Uitableview,Core Data,Nsfetchedresultscontroller,大家好,我真的非常感谢大家的帮助-我的目标是高效的w.r.t数据获取和内存使用 我有一个核心数据存储,存储内容项表(tocEntity):文章标题、页码。一个页面可以有多篇文章,页码可以存在也可以不存在,即如果您有一篇从第3页开始的5页文章,则第4-7页不会有任何t.o.c.条目 当我在表格视图中显示上述内容时,每个单元格都会显示一个页面的所有文章名称,因此一些单元格将有一个单独的文章名称,而其他单元格可能有10个(或更多) 将单元格布置得很好没有问题,但我感兴趣的是仅针对表视图当前需要的内容高
如何实现这一点有什么想法吗?在
viewdiload
中将所有数据检索到NSArray
中,然后在UITableView
数据源方法中使用此数组,而不是实时调用。如果要刷新数据,请从数据中重新填充数组,并在tableview上调用reloadData
。如果可能,我建议将所有这些链接分组到table view部分,而不是将它们分组到table view行中。这是因为可变高度单元格会降低滚动性能 我就是这样做的,但它根本不是一个内存效率高的解决方案,而且不可扩展-有可能一次只有1%的总数据可以显示在屏幕上…不幸的是,apple代码的工作方式(正如您所发现的)是,它在渲染时多次调用相同的方法。你唯一能做的就是限制行数,然后检测滚动并在表中插入行等,但我不建议这样做。还值得指出的是,CoreData存在故障,这意味着即使你的核心数据对象在一个数组中,你也没有将整个对象图保存在内存中,当您访问对象上的属性时,它会出错,导致CoreData获取该数据,这是非常有效的。我考虑过这一点,但它会导致一个包含许多单单元格部分(比多行部分更常见)的表,这看起来非常笨拙?有没有办法让每个部分与前一部分衔接起来,即各部分之间没有差距?我不清楚你指的差距在哪里。如果节有问题,您可以尝试使用未缩进的行表示页面,然后使用缩进的行表示页面链接。是否迭代整个结果数组以按页面对文章名称进行分组?如果是这样,数组中的每个对象在访问其属性时都会失效。为了提高性能,您需要确定返回已排序和分组以显示的实体的方法。关于节,您还可以返回表节的自定义视图,其中可以包括三角形等。