NSFetchRequest:FetchBatchSize和Faulting Behavior

时间:2013-01-24 10:01:02

标签: ios objective-c xcode core-data

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

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

例如,假设我有一个“公司”实体和一个“员工”实体,其中包含从“公司”到“员工”的一对多关系。我提取取回请求以检索所有公司,然后为一家公司我想加载其员工。

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

NSSet *employees = [anyCompany employees];

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

提前谢谢。

1 个答案:

答案 0 :(得分:3)

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

很明显,这取决于你的提取环境,效率不高。如果内存成为问题,您可以使用批量大小校准获取请求,但在大多数情况下,您实际上并不需要太在意它。然而,不必要的多次往返商店很可能会影响性能。

所以只需使用像

这样的表达式
aCompany.employees

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