假设我有一个NSManagedObject子类的实例,它具有1对多关系属性。性能方面,如何
for (id item in parent.children) {
// do something with an item
}
比较使用新的NSFetchRequest获取这些子节点的数组并枚举该数组而不是?有什么不同吗?
答案 0 :(得分:1)
如果您知道将迭代所有NSManagedObject的关系
您的原始NSFetchRequest应使用以下内容预取这些关系:setRelationshipKeyPathsForPrefetching:
在这种情况下,您已经支付了原始获取的成本(并且它可能低于当时)。
如果您在访问每个object.relation
时没有预取,则必须转到核心数据才能填充该关系。它可能比新的Fetch请求更好
但是如果你真的想要做一个新的Fetch请求,那么每次使用同一个请求时都不要从头创建一个。并且使用带predicateWithSubstitutionVariables:
的谓词不能每次都从头创建一个谓词。从头开始创建新谓词非常昂贵。