我的应用程序中有一个带有“笔记本”实体的核心数据模型。有两种方法可以访问一个或多个“笔记本”实例:
- 通过执行带有谓词的 NSFetchRequest 请求具有特定“标题”或“索引”属性的实例。
- 通过在我的核心数据模型中添加一个“AppData”实体,放弃“Notebook”中的“index”属性,而是从“AppData”到“Notebook”建立一对多的有序关系。然后我会在第一个应用程序启动时创建一个“AppData”实例(并且在之后的每次启动时,我都会获取该唯一一个“AppData”实例的请求)并通过其对多关系访问所有“笔记本”实例。要按标题访问笔记本,我将使用 indexOfObjectPassingTest 或快速 obj-c 枚举,要按索引访问,我将使用 objectAtIndex。
查询“笔记本”实例及其属性的“AppData”实例比每次都设置对托管对象上下文的获取请求要容易得多。
但是,哪种方法会更快?一种方法会使用更多内存还是在内存中停留更多时间?我读到多对关系中的对象是延迟加载的,但是什么时候加载该集合中的对象?什么时候卸载?