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];
}
还是其他方式?
最佳答案
第一个可能更有效。如果后者效率更高,那么 Apple 会简单地使用该路线来实现前者。
话虽这么说,如果您是因为性能似乎是一个问题而问,那可能更多的是您花费了大量时间在故障对象的核心数据上。明智的做法是使用 groups
对 self in %@
进行抓取;将获取请求的 returnsObjectsAsFaults
设置为 NO 并确保指定任何适当的 relationshipKeyPathsForPrefetching
。这样做的最终效果是,您将要迭代的所有数据都是在单次访问后备存储中获取的,而不是在大量单独的访问中按需获取的每个单独部分。
关于iphone - 如何有效地迭代 NSSet (Objective-C) - 核心数据中的对多关系表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635256/