gpt4 book ai didi

objective-c - 核心数据中的批量故障子关系

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:19:24 24 4
gpt4 key购买 nike

我有一个非常简单的小模式,如下所示:

轨迹 --> 线段 --> 坐标

所有适当的关系都已到位以完成这项工作,他们当然让我做这样的事情:

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 运行尽可能少的查询。错误的!对这些循环中的每个对象都进行了查询。

我现在已经阅读了关于故障的 Core Data 文档,我明白发生了什么,尽管我真的很想知道处理这种情况的最佳实践是什么。我需要内存中的每个对象(坐标模型有大约 100,000 个对象),因为它们都在同一时刻用于在 map 上绘制轨迹。

我应该如何处理这种超延迟加载?

最佳答案

为此,您可以使用 NSFetchRequestsetRelationshipKeyPathsForPrefetching: 方法。来自文档:

Prefetching allows Core Data to obtain related objects in a single fetch (per entity), rather than incurring subsequent access to the store for each individual record as their faults are tripped.

因此,在您对路径的初始提取请求中,您可以添加

[request setRelationshipKeyPathsForPrefetching:
[NSArray arrayWithObjects:@"segments", @"segments.coordinates", nil]]

(我从来没有尝试过 2 层深,只有一层。)

关于objective-c - 核心数据中的批量故障子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com