2

我是 Core Data 的新手,如果这是一个愚蠢的问题,我很抱歉。

有没有办法在通过访问 NSManagedObject 关系触发故障而生成的自动获取请求上设置 fetchBatchSize 属性?

例如,假设我有一个“Companies”实体和一个“Employees”实体,它们之间存在从“Companies”到“Employees”的一对多关系。我发出一个获取请求以检索所有公司,然后对于一家公司,我想加载其员工。

显而易见的方法是做这样的事情:

NSSet *employees = [anyCompany employees];

但是,如何设置 fetchBatchSize 属性以确保不会同时加载太多数据?

先感谢您。

4

1 回答 1

3

只是定义了在fetchBatchSize到持久存储的一次往返中将检索多少条记录。例如,如果一个实体有 1000 个条目并且批量大小为 20,则获取所有条目的 fetch 请求实际上将执行 50 个 SQL 语句。

很明显,这不是很有效,具体取决于您获取的上下文。如果内存成为问题,您可以使用批量大小校准获取请求,但在大多数情况下,您真的不必太在意它。然而,不必要的多次往返商店很可能会影响性能。

所以只需使用类似的表达式

aCompany.employees

自由地让 Core Data 处理内存管理。它通常只会检索它实际需要用于显示或计算的实体和属性。

于 2013-01-25T01:19:58.230 回答