核心数据与众多关系。他们懒惰负载?

时间:2009-09-19 08:21:23

标签: iphone core-data lazy-loading

我的核心数据(适用于iPhone)的典型模型包括部门和员工(部门 - >>员工)。

我不想在每次加载时加载部门的所有员工,所以我想我会将Employee创建为一个获取的财产。我以为我可以像这样定义一些谓词:

employee.deparmentId = department.departmentId

但我不能(使用Xcode图形编辑器)。

现在,阅读一些帖子,我倾向于为部门与员工(及其反向)定义一个关系,并使用它。

我的问题是:懒人加载的关系是多少?或者,每次创建(检索)部门列表时,它是否会在“数据库”中加载我的所有员工?

提前致谢 Gonso

1 个答案:

答案 0 :(得分:15)

不,默认情况下,懒惰加载与多对多关系相关的对象。但是,如果每次获取部门时都需要访问其中的许多部分,那么出于性能原因,您可能会要求Core Data同时加载它们(这称为预取)。你可以这样做:

[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"employees", nil]];