1

假设我有一个具有一对多关系属性的 NSManagedObject 子类的实例。性能方面,怎么样

for (id item in parent.children) {
   // do something with an item
}

与使用新的 NSFetchRequest 来获取这些孩子的数组并枚举该数组相比?有什么区别吗?

4

1 回答 1

1

如果您知道您将遍历所有 NSManagedObject 的关系,那么
您的原始 NSFetchRequest 应该使用 : 预取这些关系setRelationshipKeyPathsForPrefetching:
在这种情况下,您已经支付了原始提取的成本(当时可能更低)。

如果您在访问每个时不预取,object.relation则必须转到核心数据以填充该关系。它可能比新的 Fetch 请求更好。
但是如果你真的想做一个新的 Fetch 请求,不要每次都从头开始创建一个,使用同一个。并使用谓词 withpredicateWithSubstitutionVariables:不要每次都从头开始创建一个。从头开始创建新谓词是昂贵的。

于 2013-04-09T22:25:04.700 回答