【发布时间】:2020-07-20 11:18:36
【问题描述】:
我知道您不能将 coredata 视为关系数据库,因为它是一个对象图(如果我错了,请纠正我)。因此,当您使用谓词调用获取请求时,我对内存中发生的情况有点迷茫。
-
是先将整个实体加载到 ManageObjectContext,然后在谓词的帮助下进行过滤,还是直接作为关系数据库进行过滤(直接从表中选择值,就像选择查询在一个关系数据库)??
-
如果它将整个实体加载到内存中,为什么不使用“过滤器”而不是“NSPredicate”
如果有适当的 Apple 参考答案将不胜感激。
【问题讨论】:
-
如果您启用 Core Data 日志记录(参见例如stackoverflow.com/a/12306537/1187415),那么您会看到 NSPredicate 过滤是在 SQLite 级别完成的,即在内存中创建托管对象之前。
标签: ios objective-c swift core-data