iPhone开发——使用CoreData查询相关记录

Posted

技术标签:

【中文标题】iPhone开发——使用CoreData查询相关记录【英文标题】:iPhone Development - Query related records using CoreData 【发布时间】:2010-04-12 07:03:56 【问题描述】:

我有一个案例,我有三个具有一对多和一对多关系的实体:

Entity A (Entity B relationhip), 
Entity B (Entity A relationship, Entity C relationship),
Entity C (Entity B relationhip)

我有实体 A 的引用,现在我想获取所有相关的实体 C 记录。我怎样才能做到这一点? (代码量最少)

编辑:这是另一种说法。

我们可以使用 CoreData 执行连接吗?例如,(这是一个非常粗略的例子),我们有以下实体关系:

Grand Parent  (1)---(m)  Parent
Parent        (1)---(m)  Child

那么,现在如果我有“阿尔伯特”祖父母,我想得到他所有的孙子,我该怎么做?

【问题讨论】:

【参考方案1】:

如果其他人遇到类似情况,这对我有用:

NSArray *allFieldValues = [myEntityA valueForKeyPath:@"Entity B relationship.Entity C relationship.requiredFieldInEntityC"];

我主要感兴趣的是读取实体 C 中单个字段的数据(链接到 myEntityA 对象)。这里的关键概念是“不要将 CoreData 视为‘数据库’”。

【讨论】:

以上是关于iPhone开发——使用CoreData查询相关记录的主要内容,如果未能解决你的问题,请参考以下文章

CSV 到 CoreData

核心数据(SQLite/iPhone)——设计注意事项?

ios coredata 搜索大型数据集

iPhone CoreData:如何按天对获取的结果进行分组?

通过 UISearchBar 使用 CoreData 过滤查询

使用 GameKit 通过 NSDictionary 在 iPhone 之间传输 CoreData 数据