我有一个非常简单的小模式,它看起来像这样:一批核心断裂作用亲子关系数据
特雷尔 - >段 - >坐标
所有适当的关系到位,以使这个工作中,他们肯定让我做这样的事情:
NSArray *trails = <query all trails>
for (Trail *trail in trails) {
for (Segment *segment in trail.segments) {
for (Coordinate *coordinate in segment.coordinates) {
//do something with coords
}
}
}
从Django的背景的,我很高兴这一点,并承担尽可能少的查询将针对sqlite3的运行。错误!对这些循环中的每个对象都有一个查询。
我现在已经阅读了关于错误的核心数据文档,我明白发生了什么,但我真的很想知道处理这种情况的最佳实践是什么。我需要记忆中的每一个物体(坐标模型有大约100,000个物体),因为它们全部用于在地图上绘制轨迹。
我该如何处理这个超懒惰的加载?
相关的(我从来没有与2级深想这一点,只有一个级别。):HTTP:// developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/Article/cdPerformance.html#//apple_ref/doc/uid/TP40003468-SW6 我相信,一对一地预取子对象,许多关系是可能的,并且在加载父对象之后批处理错误这样的关系也是可能的。如果我有机会,我可能会测试两种方法并发布比马丁R更完整的答案。 – 2013-07-29 14:04:12