23

Core Data 中的多对多关系由 NSSet 表示(使用编辑器自动生成...创建 NSManagedObject 子类...菜单。

迭代 NSSet* 最有效的方法是什么?

NSSet* groups = [contact groups];
for(Group* group in groups) {
    NSString* groupName = [group name];
}

或者

NSSet* groups2 = [contact groups];
NSArray* groupsArray = [groups2 allObjects];
for(Group* group in groupsArray) {
    NSString* groupName = [group name];
}

或其他方式?

4

1 回答 1

19

第一个可能更有效。如果后者更有效,那么 Apple 将简单地使用该路线来实施前者。

话虽这么说,如果您之所以问,是因为性能似乎是一个问题,那么您可能更多的是花费大量时间在核心数据的故障对象上。明智的做法是self in %@使用groups; 将获取请求设置returnsObjectsAsFaults为 NO 并确保relationshipKeyPathsForPrefetching指定任何适当的。这样做的最终结果是,您将要迭代的所有数据都是在一次到后备存储的行程中获取的,而不是在大量单独的行程中按需获取其中的每个单独的部分。

于 2012-09-28T07:15:48.617 回答