dynamicUITableView与核心数据对象的高度

过去几天我一直在试图解决一个谜团,为什么批量大小为20的NSFetchedResultsController会在抓取完成时立即将所有对象(即加载到内存)中的错误导致请求采取~20秒。

事实certificate,这是因为在我的heightForRowAtIndexPath,高度是基于每个获取的对象的NSString属性的长度,所以在重新加载表,如果该表有2000行,那么高度计算每行的一开始,由于我访问的是对象的文本属性,所以2000年的对象(20个批量的对象)在一开始就会出错,从而导致它永远消失。 (我不知道行高是在开始时计算的)。

所以问题是,如果我有一个批处理大小为20的获取结果控制器,但我的行高是基于对象的文本属性,如果我尝试访问会导致对象不再是一个错误了,但实际上加载到内存中,什么是计算高度的解决方法?

我有什么select?

有趣的问题。 我想提升性能的方法是在模型中创build一个存储string文本长度的属性。 用这种方法,你不需要计算每一行的长度,但是你有一个预先计算好的高度。

可能还有其他宝贵的解决scheme。

在您的视图控制器类中创build一个静态方法,负责计算所述高度。 所有你需要提供这个函数是一个NSString,它应该返回一个容易计算的CGFloat。 使用此方法返回元素所需的高度,而不用实例化它们(这里所需要的只是它们文本的元数据)。