Core Data的一对多关系。它们是惰性加载吗?

7

我在Core Data(iPhone)中有一个典型的模型,其中包含部门和员工(Department ->> Employee)。

我不想每次加载部门时都加载所有员工,所以我想将Employee创建为已获取的属性。我认为我可以定义一些谓词,例如:

employee.deparmentId = department.departmentId

但是我无法使用Xcode图形编辑器完成此操作。

现在,通过阅读一些帖子,我倾向于为Department到Employee(以及其反向)定义一个to-many关系并使用它。

我的问题是:to-many关系是否是延迟加载?或者每次创建(检索)部门列表时是否会加载所有员工到“数据库”中?

提前感谢 Gonso

1个回答

19
不,与to-many和to-one关系相关的对象默认情况下会惰性加载。但是,如果您每次获取部门都需要访问其中许多对象,为了提高性能,您可以要求Core Data同时加载它们(这称为预取)。您可以按照以下方式实现此目的:
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"employees", nil]];

相反地,除非我要处理员工,否则我不想加载员工。此外,大多数情况下,我不会列出所有员工(即运行Set),而是获取子集(即运行fetch)。谢谢。 - gonso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接