【问题标题】:Persisting a subset of Core Data objects持久化核心数据对象的子集
【发布时间】:2012-10-22 22:12:21
【问题描述】:

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

Core Data 正在管理我的模型的所有属性和关系。一种这样的关系是与Author 的所有Books 的关系。有时以特定顺序了解同一列表很有用,因此我将booksByDate(例如)添加到NSManagedObject 作者。

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

我想缩短启动时间。我正在试验的一个领域是以某种方式存储每个Author 的缓存booksByDate。在启动时,我不必告诉每个 Author 使用昂贵的排序描述符生成其缓存,而是将每个存储的缓存传递给正确的 Author

如何存储这些缓存以便它们在执行之间保持不变?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这很有趣 - 我没有认为是 Date 部分产生了影响 - 我认为它是任何排序描述符。我会试一试。不过,知道我在问题中提出的建议是否可行仍然很有趣。
    • 我正在研究 XCode 的核心数据编辑器中的“索引”选项 - 在 stackoverflow.com/questions/13022065/… 寻找信息
    • 索引将是一个改进,但我猜你没有按时间顺序添加书籍。所以你仍然必须订购它们。当然,Date 比较比简单的 int 比较要昂贵得多。
    • 即使我按时间顺序添加它们,也没什么可说的,以后我不希望它们按不同的顺序排列,并遇到同样的问题。我将尝试按照您的回答中所述自行管理索引。
    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多