iphone - 如何有效地迭代 NSSet (Objective-C) - 核心数据中的对多关系表示?

标签 iphone objective-c ios cocoa operating-system

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 会简单地使用该路线来实现前者。

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

关于iphone - 如何有效地迭代 NSSet (Objective-C) - 核心数据中的对多关系表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635256/

相关文章:

iphone - iPad 应用程序的按安装付费机制?

ios - 更改 MFMailComposeViewController 的工具栏颜色

ios - 响应问题;在方向改变之前文本呈现不正确的大小?

iphone - iOS Google Drive sdk 集成和权限

iphone - 为什么以及何时应该在 iOS 应用程序中使用 C/C++ 代码?

iphone - 如何使标签加载网站上的内容?

ios - 在 iOS 上使用 RSA 公钥加密

ios - 仅在 Swift 中创建一个 Setter

iphone - 在 IB 中,如何让 subview 在调整父级大小时保持与其父级相同的大小?

ios - Socket.IO malloc:***错误:无法分配区域