Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 处理大小可变的UITableView单元格并高效检索关联数据的最有效方法_Objective C_Uitableview_Core Data_Nsfetchedresultscontroller - Fatal编程技术网

Objective c 处理大小可变的UITableView单元格并高效检索关联数据的最有效方法

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个(或更多) 将单元格布置得很好没有问题,但我感兴趣的是仅针对表视图当前需要的内容高

大家好,我真的非常感谢大家的帮助-我的目标是高效的w.r.t数据获取和内存使用

我有一个核心数据存储,存储内容项表(tocEntity):文章标题、页码。一个页面可以有多篇文章,页码可以存在也可以不存在,即如果您有一篇从第3页开始的5页文章,则第4-7页不会有任何t.o.c.条目

当我在表格视图中显示上述内容时,每个单元格都会显示一个页面的所有文章名称,因此一些单元格将有一个单独的文章名称,而其他单元格可能有10个(或更多)

将单元格布置得很好没有问题,但我感兴趣的是仅针对表视图当前需要的内容高效地获取数据(NSFetchedResultsController的工作方式)-问题是,每个单元格没有一个核心数据条目,而是数量不同。因此,如果NSFETvhederResultsController会说(给我12-17单元的数据)-这不会导致单核心数据检索


如何实现这一点有什么想法吗?

viewdiload
中将所有数据检索到
NSArray
中,然后在
UITableView
数据源方法中使用此数组,而不是实时调用。如果要刷新数据,请从数据中重新填充数组,并在tableview上调用
reloadData

如果可能,我建议将所有这些链接分组到table view部分,而不是将它们分组到table view行中。这是因为可变高度单元格会降低滚动性能

我就是这样做的,但它根本不是一个内存效率高的解决方案,而且不可扩展-有可能一次只有1%的总数据可以显示在屏幕上…不幸的是,apple代码的工作方式(正如您所发现的)是,它在渲染时多次调用相同的方法。你唯一能做的就是限制行数,然后检测滚动并在表中插入行等,但我不建议这样做。还值得指出的是,CoreData存在故障,这意味着即使你的核心数据对象在一个数组中,你也没有将整个对象图保存在内存中,当您访问对象上的属性时,它会出错,导致CoreData获取该数据,这是非常有效的。我考虑过这一点,但它会导致一个包含许多单单元格部分(比多行部分更常见)的表,这看起来非常笨拙?有没有办法让每个部分与前一部分衔接起来,即各部分之间没有差距?我不清楚你指的差距在哪里。如果节有问题,您可以尝试使用未缩进的行表示页面,然后使用缩进的行表示页面链接。是否迭代整个结果数组以按页面对文章名称进行分组?如果是这样,数组中的每个对象在访问其属性时都会失效。为了提高性能,您需要确定返回已排序和分组以显示的实体的方法。关于节,您还可以返回表节的自定义视图,其中可以包括三角形等。