持久化Core Data对象的子集

时间:2012-10-22 22:12:21

标签: objective-c ios performance cocoa core-data

这有点奇怪,但我想在Core Data之外存储一个NSManagedObjects数组。

Core Data正在管理我所有模型的属性和关系。一个这样的关系是所有Author的{​​{1}}。有时以特定顺序知道相同列表很有用,因此我已将Books(例如)添加到booksByDate作者。

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

我想缩短发布时间。我正在尝试的一个方面是以某种方式存储每个booksByDate的缓存Author。在启动时,我没有告诉每个booksByDate使用昂贵的排序描述符生成其缓存,而是可以将每个存储的缓存传递给它正确的Author

我如何存储这些缓存,以便它们在执行之间持续存在?

1 个答案:

答案 0 :(得分:0)

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