我是Core Data的新手,很抱歉,如果这是一个愚蠢的问题。
有没有办法在通过访问NSManagedObject关系触发错误而生成的自动提取请求上设置fetchBatchSize属性?
例如,假设我有一个“公司”实体和一个“员工”实体,其中包含从“公司”到“员工”的一对多关系。我提取取回请求以检索所有公司,然后为一家公司我想加载其员工。
显而易见的方法是做这样的事情:
NSSet *employees = [anyCompany employees];
但是,如何设置fetchBatchSize属性以确保不会同时加载太多数据?
提前谢谢。
答案 0 :(得分:3)
fetchBatchSize
只定义了在持久存储的一次往返中要检索的记录数。例如,如果一个实体有1000个条目且批量大小为20,则获取所有条目的获取请求实际上将执行50个SQL语句。
很明显,这取决于你的提取环境,效率不高。如果内存成为问题,您可以使用批量大小校准获取请求,但在大多数情况下,您实际上并不需要太在意它。然而,不必要的多次往返商店很可能会影响性能。
所以只需使用像
这样的表达式aCompany.employees
自由地让Core Data处理内存管理。它通常只会检索实际需要显示或计算的实体和属性。