我的应用中有一个核心数据模型,带有'Notebook'实体。 我可以通过两种方式访问一个或多个“Notebook”实例:
查询“AppData”实例的“Notebook”实例及其属性比每次设置对托管对象上下文的获取请求要容易得多。
但是,哪种方法会更快?一种方法会使用更多内存还是留在内存中的时间更长?我读到很多关系中的对象是懒惰加载的,但是什么时候会加载该组中的对象?什么时候卸货?
答案 0 :(得分:2)
AppData
实体似乎多余。您必须先获取它,所以为什么不取而代之前获取所有Notebook
个实例?在两种情况下,过滤(按标题,其他ID属性)都是相同的。
获取请求不一定非常痛苦:
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Notebook"];
NSArray *fetchedObjects = [moc executeFetchRequest:fetch error:nil];
此外,根据您可以在内存中过滤这些内容的数据量,或者在获取请求中包含谓词。
当然,无论情况如何,都放弃了对“索引属性”的想法。核心数据是对象图,而不是数据库。唯一的理由是,如果您需要与使用唯一标识符的某个外部框架或数据存储同步。
为方便起见,您可以在托管对象的类别中创建方法。
+(NSArray*) appNotebooks {
NSArray * fetchedResults = // fetch the appropriate entities
return fetchedResults;
}
然后你会像这样使用它:
Notebook.appNotebooks;