gpt4 book ai didi

objective-c - 使用 SQLite 存储在 Core Data 中对未保存数据的查询如何工作?

转载 作者:行者123 更新时间:2023-12-03 09:55:35 25 4
gpt4 key购买 nike

直到发送托管对象上下文 save:消息,对托管对象所做的修改仅在内存中,而不是提交给数据库。那么它如何对数据库执行查询呢?它必须执行标准的 SQL 查询,然后查询未保存的对象并合并结果,这应该很慢。

更新:
例如,我有文章 <-> 标记多对多关系,并且我有许多未保存的文章。然后我想找到所有具有某些标签或在某些日期之间的文章。在数据库中,这将是对我们的关系表或日期字段的查询,并将使用适当的索引。但是对于未保存的对象,它必须遍历所有未保存的文章和/或其标签?或者对于未保存的对象,它也有一些类似数据库的存储?

最佳答案

默认情况下,Core Data 不会在您执行 fetch 时查询挂起的更改 - 您需要使用 setIncludesPendingChanges 显式设置它。获取请求的属性。

假设您已启用此功能:我不确定您为什么认为查询未保存的更改会更慢。

如果您的 Core Data 实例由 SQLite 存储支持,那么您需要从持久存储(磁盘)中读取数据库。您未保存的对象仍将全部位于 RAM 中 - 访问这些未保存的对象比访问数据库中的对象要快得多。您可以并行执行这两个查询,然后合并结果 - 合并数组是微不足道的 - 这意味着几乎没有性能损失。

总是有异常(exception)和边缘情况,但一般来说不应该有明显的性能损失。

关于objective-c - 使用 SQLite 存储在 Core Data 中对未保存数据的查询如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866865/

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