gpt4 book ai didi

ios - 按与动态位置的距离过滤核心数据实体

转载 作者:行者123 更新时间:2023-11-28 10:57:50 25 4
gpt4 key购买 nike

我有一个 NSManagedObject 派生类(实体),其实例保存在本地 SQL-lite 存储中。该类还具有经度和纬度属性,我需要根据与特定坐标的距离来获取实体。我尝试将 NSPredicate 与自定义函数一起使用,但找不到有关如何实现该函数的文档(...如果它确实支持)。有没有人知道如何对核心数据实体执行这种动态过滤?我尝试使用 NSPredicate withBlock,但它不适用于 SQL-Lite 数据库中持久保存的对象。请帮忙。

最佳答案

您无法使用 Core Data 做到这一点。在获取实体后,您可以使用 Transient 属性来模拟与动态位置的距离,甚至可以根据该 Transient 属性对项目进行排序。但是,如果它们是持久属性,则只能从持久存储中获取属性。

在实践中,我发现如果坐标已编入索引,则在矩形窗口中查询点的速度非常快。通过采用动态位置的纬度/经度加上/减去搜索半径来构建窗口,如果它是未投影的数据(纯纬度/经度,而不是 UTM 或类似网格),则对经度窗口进行余弦(纬度)调整。

如果这真的不够快,您可以在您的实体上存储一个 geohash,这会为您提供一个字符串,您可以对其进行前缀搜索。参见 https://en.wikipedia.org/wiki/Geohash进行讨论。或者您可以实现真正的空间索引。但我从来没有遇到过值得实现这些方法中的任何一种的 Core Data 性能问题。

关于ios - 按与动态位置的距离过滤核心数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166204/

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