问题标签 [yapdatabase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
24 浏览

swift - 我应该在 YapDatabase 中使用类还是结构?

我有一个用于存储用户的简单数据结构:

我对我应该使用结构还是类感到困惑。我查阅了Apple 的文档

例如,在查询远程数据库的应用程序中,实例的身份可能由外部实体完全拥有并通过标识符进行通信。如果应用程序模型的一致性存储在服务器上,您可以将记录建模为带有标识符的结构。

对 PenPalRecord 等模型类型进行本地更改很有用。例如,应用程序可能会推荐多个不同的笔友以响应用户反馈。因为 PenPalRecord 结构不控制底层数据库记录的标识,所以对本地 PenPalRecord 实例所做的更改不会意外更改数据库中的值。

这建议使用结构,因为我不想意外修改数据库中的模型,YapDatabase 是 一个键/值存储。YapDatabase 很清楚,您可以同时存储结构和类。然而,他们的大多数文档似乎都建议使用 Class。

有什么想法吗?

0 投票
0 回答
199 浏览

database - 核心数据按与当前用户位置的距离过滤

我有一个 NSManagedObject 类,它保存在 Core Data 的 SQLite 数据库中。此对象具有持久的纬度和经度属性。我正在尝试创建一个 NSFetchedRequestController 来获取该类的所有实例,这些实例与用户有一定的距离。做了一些研究,Core Data 似乎不可能做到这一点,因为 Core Data 只支持边界框样式查询,不支持带有块的谓词。

例如,我有一类具有纬度和经度属性的组。给定纬度和经度(例如,用户),获取给定纬度和经度半径 6 英里范围内的所有组。

我想利用 Core Data 的 R-Tree Indexing 对用户附近的班级实例的纬度和经度进行快速边界框查询。然后我想用更精确的谓词过滤结果,使用我自己的代码块来查看哪些实例位于我的用户当前位置。这是“边界框”查询。

问题是我想要一个看起来像这样的提取:

NSFetched 结果控制器不允许带有块的谓词。这两个提取之间存在显着差异。第一个获取边界框中的所有组(minLat、minLon、maxLat 和 maxLat),后者获取给定半径的 Circle 中的所有组。

然后我想使用 NSFetchedRequestController 在表格中显示结果,并利用良好的自动更新功能。但当然,Core Data 只支持边界框样式查询,不支持我需要的两步过滤方法。有合适的解决方案吗?

如果 Core Data 根本无法用于这种类型的使用,我愿意使用其他数据库。我看了一下 YapDatabase,它似乎更灵活,并且包括 R-Tree 索引,但我担心它没有得到很好的支持。Realm 不支持 R-Tree 索引。