Objective c 持久化核心数据对象的子集

Objective c 持久化核心数据对象的子集,objective-c,ios,performance,cocoa,core-data,Objective C,Ios,Performance,Cocoa,Core Data,这有点奇怪,但我想在核心数据之外存储一个NSManagedObject数组 核心数据管理模型的所有属性和关系。其中一种关系是与作者的所有书籍的关系。有时,以某种顺序了解同一个列表很有用,因此我将booksByDate添加到了NSManagedObject作者中 因为排序描述符被证明是昂贵的,所以我在Author上使用iVar实现了一个缓存。这对我遇到的一些滞后的UI问题有很大帮助。但是缓存只有在第一次加载之后才有用,所以当我的应用程序启动时,我现在去告诉每个作者缓存其booksByDate。这使

这有点奇怪,但我想在核心数据之外存储一个NSManagedObject数组

核心数据管理模型的所有属性和关系。其中一种关系是与作者的所有书籍的关系。有时,以某种顺序了解同一个列表很有用,因此我将booksByDate添加到了NSManagedObject作者中

因为排序描述符被证明是昂贵的,所以我在Author上使用iVar实现了一个缓存。这对我遇到的一些滞后的UI问题有很大帮助。但是缓存只有在第一次加载之后才有用,所以当我的应用程序启动时,我现在去告诉每个作者缓存其booksByDate。这使我的启动时间增加了几秒钟,但一旦应用程序运行,性能就会大大提高

我想缩短发射时间。我正在尝试的一个领域是以某种方式存储每个作者缓存的booksByDate。在启动时,我不需要告诉每个作者使用昂贵的排序描述符生成其缓存,而只需将存储的每个缓存传递给它的正确作者即可


如何存储这些缓存,使它们在执行之间保持不变

我认为最好的选择是每本书都有一个索引成员。 插入新书时,只需在该书的作者列表中循环,并为该书的索引设置适当的值。 这样,每次你要这些书时,你都可以根据索引进行排序。
这将比按日期进行比较快得多。

这很有趣-我没有考虑到是日期部分产生了影响-我假设它是任何排序描述符。我要试一试。不过,我还是很想知道我在问题中提出的建议是否可行。我正在研究XCode核心数据编辑器中的“索引”选项——在索引中查找信息将是一种改进,但我猜您并没有按时间顺序添加这些书。所以你还是要点。当然,日期比较比简单的整数比较要昂贵得多。即使我按时间顺序添加它们,也没什么可说的,我不希望它们以后以不同的顺序出现,并经历相同的问题。我将尝试自己管理索引,如您的回答中所述。